如何显示多行而不是一行?

How to show multiple lines instead of one?

对于学校,我必须做一个作业,在其中显示每个城市测量时间的交通长度。当我尝试这样做时,我得到了这个结果:

这是我的数据框的照片:

这是我的代码:

import plotly.express as px

datum = data.loc[data['Date'] == '2020-03-03']
datum = datum.sort_values(by='Time')
dataframe = pd.DataFrame(datum, columns = ['City','Time', 'Date','Traffic_length', 'Traffic_jams'])

dataframe = dataframe.reset_index()

fig = px.line(dataframe, x="Time", y="Traffic_length", color='City')
fig.show()

我希望它用不同的线显示每个城市,如下所示:

我尝试了多种方法但没有任何帮助。有谁知道如何用 plotly.express 做到这一点?

使用 pivot 转换数据然后绘图

import matplotlib.pyplot as plt
df = df.pivot(index='Time', columns='City', values='Traffic_length')
df.plot()
plt.show()

您可以使用 pandas' 绘图函数,例如:

import matplotlib.pyplot as plt
import pandas as pd
df = dataframe
fig, ax = plt.subplots()
df.groupby('City').plot(x='Time', y='Traffic_length', ax=ax, legend=True)

问题是 x 轴是分类轴。您可以通过将其转换为 datetime 来修复它。完整的代码如下所示:

import plotly.express as px

datum = data.loc[data['Date'] == '2020-03-03']
datum = datum.sort_values(by='Time')
dataframe = pd.DataFrame(datum, columns = ['City','Time', 'Date','Traffic_length', 'Traffic_jams'])

df = dataframe.reset_index()
df["Time"] = pd.to_datetime(df["Time"]) # <-- This is what you missed

fig = px.line(df, x="Time", y="Traffic_length", color='City')
fig.show()