4

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

结果

这是我的数据框的照片:

数据框

这是我的代码:

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 做到这一点?

4

3 回答 3

2

问题是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()
于 2020-03-05T11:45:08.913 回答
0

使用数据透视转换数据然后绘图

import matplotlib.pyplot as plt
df = df.pivot(index='Time', columns='City', values='Traffic_length')
df.plot()
plt.show()
于 2020-03-05T11:04:28.340 回答
0

您可以使用 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)
于 2020-03-05T11:06:37.897 回答