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