问题描述
以下代码绘制了 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,'.')
plt.tight_layout()
plt.show()