如何在 matplotlib(Python) 中有效地绘制日期?

How to efficiently plot dates in matplotlib(Python)?

这是一段代码,绘制了从 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)

这是图表:

非常感谢

你可以使用 xticks 属性 旋转任意度数

plt.xticks(rotation=45)

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

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()