【问题标题】:How to efficiently plot dates in matplotlib(Python)?如何在 matplotlib(Python) 中有效地绘制日期?
【发布时间】:2021-07-20 08:13:43
【问题描述】:

以下代码绘制了 2021 年 1 月至 7 月期间印度的所有 Covid-19 测试用例。 记录是每天的,但我的scatterplot 只显示 17 个点并且日期重叠。有什么有效的方法吗?

df.to_numpy()
df1 = df[(df.date.str.endswith("21")) & (df.location == "India")]
plt.scatter(x=df1.date, y=df1.total_cases)

这是图表:

非常感谢

【问题讨论】:

    标签: python pandas dataframe matplotlib scatter


    【解决方案1】:

    让我们首先创建一个玩具数据框:

    data = [[f"{i%30+1:02}/{6+i//30:02}/21", np.random.randint(i, i+10)**2] 
            for i in range(5, 50)]
    df = pd.DataFrame(data, columns=["date", "total_cases"])
    

    我建议将日期转换为日期格式,以便在一般情况下更轻松地处理,特别是让 matplotlib 适应其轴。

    df.date = pd.to_datetime(df.date, format="%d/%m/%y")
    

    现在 matplotlib 可以处理它并且可以选择适当数量的 x-ticks。由于标签比较长,我们也可以旋转它。

    plt.plot(df.date, df.total_cases, '.')
    plt.xticks(rotation=25, ha="right")
    plt.tight_layout()
    plt.show()
    

    3.4 版。 Matplotlib 提供了一种在 x 轴上显示日期的便捷方式:

    plt.rcParams['date.converter'] = 'concise'
    plt.plot(df.date, df.total_cases, '.')
    plt.tight_layout()
    plt.show()
    

    【讨论】:

      【解决方案2】:

      您可以使用 xticks 属性以任意角度旋转

      plt.xticks(rotation=45)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-22
        • 1970-01-01
        • 2014-10-14
        • 2020-08-21
        • 1970-01-01
        • 2021-12-29
        • 1970-01-01
        • 2012-03-26
        相关资源
        最近更新 更多