繁体   English   中英

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

[英]How to force set x ticks on matplotlib, or set datetime type with no year

所以我有一个函数可以获取一个 Pandas 数据框并绘制它,同时显示一些错误指标,我还有一个函数可以获取一个带有日期时间类型索引的 Pandas 数据帧,并获取数据框。 问题是,当我尝试绘制每日平均值时,matplotlib 看起来非常糟糕,因为它每天都在 x 轴上绘制一个单独的刻度线。 我在一个名为 Hydrostats 的包中拥有所有这些代码,日均函数的 github 存储库源代码在这里,绘图函数的源代码在这里 线性时间序列的图如下。 线性时间序列 每日平均图如下所示日均图

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

可以设置用于x轴经由蜱ax.set_xticks()经由和标签ax.set_xticklabels()

例如,您可以为该方法提供要使用的日期列表,例如当前pd.DataFrame索引( df.index[::20] )的每 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)

笔记

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

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

我的情节遇到了类似的问题

情节拍摄

Matplotlib 自动处理轴上的时间戳,但仅当它们采用时间戳格式时。 index中的时间戳是字符串格式,所以我将read_csv更改为

pd.read_csv(file_path, index_col=[0], parse_dates=True)

尝试将索引更改为时间戳格式。 这为我解决了问题,希望它对您也有帮助。

nutha情节拍摄

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM