首页 > 解决方案 > 我如何使 xticks 等距,尽管它们很有价值?

问题描述

我正在尝试绘制随时间推移在样本中测量的污染物的图表,并且一些样本日期更接近。如何用当前日期时间值绘制这条线,但使每个 xtick 等距?

这是我到目前为止所得到的,目前当样本靠得更近时,蜱会聚集在一起。

date = df_TCE.SAMPLEDATE.unique()

date_IA14 = df_TCE.SAMPLEDATE[df_TCE.SYS_LOC_CODE == 'IA-14']

IA14 = df_TCE.AL_RESULT_VALUE[df_TCE.SYS_LOC_CODE == 'IA-14']

plt.plot(date_IA14, IA14)

plt.title('TCE Time Series')
plt.xlabel('Date')
plt.ylabel('Contaminant Level')
ax = plt.subplot()
ax.set_xticks(date_IA14)
ax.set_yticks([1, 2, 3, 4, 5, 6, 7])
ax.set_facecolor('seashell')

plt.show()

这是带有刻度的输出:

Output

标签: pythonpandasmatplotlib

解决方案


您可以尝试几件事。

首先,通过运行确保您调用的数据框系列SAMPLEDATE是日期时间对象pandas.to_datetime(df_TCE.SAMPLEDATE)。解决出现的任何解析错误,以便您真正处理日期时间 x 轴而不是字符串。

然后,签出fig.autofmt_xdate()而不是ax.set_xticks(date_IA14). 一旦我们的 x 轴被适当的日期时间对象填充,matplotlib它就足够聪明,可以让我们获得合理的 xtick 间距。

如果您不喜欢默认值,请查看matplotlib.dates.DayLocator()HourLocator() 或 MonthLocator(),只要满足您的定期间隔需求即可。您可以将其应用于您的轴对象,如下所示: ax.xaxis.set_major_locator(matplotlib.dates.DayLocator())

https://matplotlib.org/3.1.1/api/dates_api.html#matplotlib.dates.DayLocator


推荐阅读