如何强制在matplotlib上设置x刻度,或设置没有年份的日期时间类型

Wad*_*ade 2 python plot matplotlib pandas

因此,我有一个函数将获取一个pandas数据框并对其进行绘制,并显示一些错误度量,并且我也有一个函数将获取一个带有日期时间类型索引的pandas数据框,并获取每日值的平均值。数据框。问题是,当我尝试绘制每日平均值时,使用matplotlib看起来确实很糟糕,因为它将每日绘制为x轴上的单独刻度。我有一个叫液压调节器包所有这些代码,对于日均功能GitHub的reposity源代码是在这里,和绘图功能的源代码是在这里。线性时间序列的图如下。 线性时间序列 日平均图如下所示 每日平均图

如您所见,您看不到任何x轴刻度,因为它们都被挤压在一起。

tsh*_*wen 6

您可以通过ax.set_xticks()和设置用于x轴的刻度线ax.set_xticklabels()

例如,您可以为该方法提供要使用的日期列表,例如当前pd.DataFrame索引的第20个值(df.index[::20]),然后按如下所示设置日期字符串的格式。

# Get the current axis
ax = plt.gca()

# Only label every 20th value
ticks_to_use = df.index[::20]

# Set format of labels (note year not excluded as requested)
labels = [ i.strftime("%-H:%M") for i in ticks_to_use ]

# Now set the ticks and labels
ax.set_xticks(ticks_to_use)
ax.set_xticklabels(labels)
Run Code Online (Sandbox Code Playgroud)

笔记

如果标签仍然重叠,您也可以通过传递旋转参数(例如ax.set_xticklabels(labels, rotation=45))来旋转标签。

这里有一个有关时间字符串格式的有用参考:http : //strftime.org