pyplot 轴中日期时间的格式

Posted

技术标签:

【中文标题】pyplot 轴中日期时间的格式【英文标题】:Format of datetime in pyplot axis 【发布时间】:2015-07-10 05:02:23 【问题描述】:

我正在尝试使用 pyplot 针对 x 轴上的 datetime 对象列表绘制一些数据。然而,日期显示为标准格式,即%Y-%m-%d %H:%M:%S(太长了)。我可以通过使用strftime 创建日期字符串列表来规避这个问题,然后改用它。我也知道pyplot 有某种date 固有对象,我可以使用它来代替datetime

有没有办法告诉pyplot 以哪种格式绘制datetimeobjects?无需将所有内容转换为字符串或其他类型的对象?

谢谢。

【问题讨论】:

【参考方案1】:

你可以使用DateFormatter:

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(your_dates, your_data)

# format your data to desired format. Here I chose YYYY-MM-DD but you can set it to whatever you want.
import matplotlib.dates as mdates
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))

# rotate and align the tick labels so they look better
fig.autofmt_xdate()

【讨论】:

【参考方案2】:

除了手动指定坐标轴的日期时间格式,如the other answer 所示,您还可以使用rcParams 设置格式。

标准是

# date.autoformatter.year     : %Y
# date.autoformatter.month    : %Y-%m
# date.autoformatter.day      : %Y-%m-%d
# date.autoformatter.hour     : %m-%d %H
# date.autoformatter.minute   : %d %H:%M
# date.autoformatter.second   : %H:%M:%S
# date.autoformatter.microsecond   : %M:%S.%f

您可以在matplotlib rc file 中更改它, 或在代码中通过

plt.rcParams["date.autoformatter.minute"] = "%Y-%m-%d %H:%M:%S"

【讨论】:

与否决票可能暗示的不同,此方法运行良好,与其他选项相比,甚至可以节省一些输入。 我同意,这完全可以解决问题。 date.autoformatter使用的库是什么?

以上是关于pyplot 轴中日期时间的格式的主要内容,如果未能解决你的问题,请参考以下文章

将日期显示为ggplotly图的x轴中的实际日期,而不是仅显示为月份[重复]

如何通过 Google 图表 API 使用 X 轴中的日期?

将 txt 文件中的日期解析为整数

Highcharts 日期时间本地化

在Y轴中显示时间 - 气泡图

可视化操作