【问题标题】:How to show multiple lines instead of one?如何显示多行而不是一行?
【发布时间】:2020-03-05 10:58:35
【问题描述】:

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

这是我的数据框的照片:

这是我的代码:

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

【问题讨论】:

标签: python pandas plotly plotly-express


【解决方案1】:

问题在于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()

【讨论】:

    【解决方案2】:

    使用枢轴转换数据然后绘图

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

    【讨论】:

    • 这是一个 matplotlib 对一个情节问题的回答。
    【解决方案3】:

    您可以使用 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)
    

    【讨论】:

    • 这是一个 matplotlib 对一个情节问题的回答。
    猜你喜欢
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 2016-01-24
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 2016-06-18
    相关资源
    最近更新 更多