matplotlib 减少绘图X轴上的标签数

bf1o4zei  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(124)

我正在学习matplotlib,并试图绘制一个简单的散点图,x轴上有日期,y轴上有值。有2200个日期,从2004年到2019年,(格式2014-09-17类型O)。
下面是我的代码:

x=df.DATE
y=df.CLOSE

plt.figure(figsize=(21,12))
plt.xticks(fontsize=8, rotation = 45)
plt.scatter(x,y)

这个图很棒,但是,很明显,xaxis有2000个条目!我检查了Matplotlib文档(可能是我的,但它不是很noob友好,不像python文档)和其他关于stackoverflow的帖子,关于如何减少写在x轴上的标签(日期)的数量,并找到了各种命令:我尝试了各种各样的变化,但是没有一个能用。很多都需要“ax.”,我没有用过,当我尝试轴的时候,它告诉我它没有定义。
我被难住了。有什么简单的方法可以把x轴上的条目数减少到,比如说最多“n”个日期,或者每10个日期就有一个?
谢谢你!

sd2nnvve

sd2nnvve1#

以防其他人也有同样的问题。我找到了两个简单的方法...
第一个
plt.locator_params(axis="x", nbins=<number>)
我不知道为什么或如何工作,但我的情节最初有2204个日期在这种格式:2014年9月17日,在45度下打印出一条粗黑且不可读的线。
我用“number”= 3重新运行代码,重新绘制了x轴上的年份,格式为2015年,7个数字,2015-2021年,再用“1”和“2”做一次,看看发生了什么,仍然得到了7年,没有任何变化。
下面是原始代码和图表:

plt.figure(figsize=(21,12))
plt.xticks(fontsize=8, rotation = 45)
plt.scatter(df_btc_price.DATE, df_btc_price.VOLUME)

以下是修改后的代码和新图表。

plt.figure(figsize=(21,12))
plt.xticks(fontsize=8, rotation = 45)
plt.scatter(df_btc_price.DATE, df_btc_price.VOLUME)

plt.locator_params(axis="x", nbins=2)

我完全不知道为什么这样做是有效的,为什么它只打印年份而不是整个日期。
如果有人能开导我,我会很高兴的。
第二个
记住日期的格式如下:2020-09-24,添加此代码:

df_btc_price['DATE'] = pd.to_datetime(df_btc_price['DATE'])

所以现在看起来像这样:

plt.figure(figsize=(21,12))
plt.xticks(fontsize=8, rotation = 45)
plt.scatter(df_btc_price.DATE, df_btc_price.VOLUME)
df_btc_price['DATE'] = pd.to_datetime(df_btc_price['DATE'])

图表如下所示:

我还不知道为什么它只打印年份,或者如何改变它,比如说,它打印月份,但至少它解决了混乱的x轴标签。

oknwwptz

oknwwptz2#

您可以使用类似于以下内容的内容:

import matplotlib.dates as mdates

years = mdates.YearLocator()  
ax.xaxis.set_major_locator(years) #Every year

下面是一个详细的示例:https://matplotlib.org/2.0.2/examples/api/date_demo.html

相关问题