如何自定义 Pandas 日期时间戳@ x 轴

Posted

技术标签:

【中文标题】如何自定义 Pandas 日期时间戳@ x 轴【英文标题】:How to Customise Pandas Date Time Stamp @ x-axis 【发布时间】:2014-09-01 19:27:26 【问题描述】:

当我绘制完整的数据并在 x 轴上显示日期时:

当我放大特定部分进行查看时:

该图只显示时间而不是日期,我知道用较少的点不能显示不同的日期集,但是即使图表被缩放,如何显示日期或设置日期格式?

dataToPlot = pd.read_csv(fileName, names=['time','1','2','3','4','plotValue','6','7','8','9','10','11','12','13','14','15','16'], 
                             sep=',', index_col=0, parse_dates=True, dayfirst=True)
dataToPlot.drop(dataToPlot.index[0])
startTime = dataToPlot.head(1).index[0]
endTime = dataToPlot.tail(1).index[0]
ax = pd.rolling_mean(dataToPlot_plot[startTime:endTime][['plotValue']],mar).plot(linestyle='-', linewidth=3,  markersize=9, color='#FECB00')

提前致谢!

【问题讨论】:

【参考方案1】:

我有一个使标签看起来一致的解决方案,但请记住,它还将包括“更大规模”时间图上的时间。

下面的代码使用matplotlib.dates 功能为 x 轴选择日期格式。请注意,由于我们使用的是 matplotlib 格式,您不能简单地使用 df.plot,而是必须使用 plt.plot_date 并将您的索引转换为正确的格式。

import pandas as pd

import matplotlib.pyplot as plt
from matplotlib import dates

# Generate some random data and plot it

time = pd.date_range('07/11/2014', periods=1000, freq='5min')
ts = pd.Series(pd.np.random.randn(len(time)), index=time)

fig, ax = plt.subplots()

ax.plot_date(ts.index.to_pydatetime(), ts.data)

# Create your formatter object and change the xaxis formatting.

date_fmt = '%d/%m/%y %H:%M:%S'

formatter = dates.DateFormatter(date_fmt)
ax.xaxis.set_major_formatter(formatter)

plt.gcf().autofmt_xdate()

plt.show()

显示完全缩小图的示例

显示放大图的示例。

【讨论】:

感谢@Ffisegydd,当我尝试遇到错误时,我已将其复制到您的答案下方,请告诉我可能导致此错误的原因...谢谢 ax.plot_date(ts.index.to_pydatetime(), ts.data) AttributeError: 'tuple' object has no attribute 'plot_date' 伟大的博士。它在删除线 ax = plt.subplots() 后终于工作了,现在它在零轴上显示蓝色虚线 [i.imgur.com/bUstJVH.png],请告诉我如何禁用或不绘图.非常感谢您的宝贵时间... 对不起博士,我太懒了,但现在我已经根据我的使用构造了代码。感谢您的帮助 ax.plot_date(ts.index.to_pydatetime(), ts.data) 行会导致错误。将其更改为此有效:ax.plot_date(ts.index.to_pydatetime(), ts.data)。

以上是关于如何自定义 Pandas 日期时间戳@ x 轴的主要内容,如果未能解决你的问题,请参考以下文章

python 使用日期自定义x轴样式。

python 使用日期自定义x轴样式。

如何将 dmesg 时间戳转换为自定义日期格式?

Pandas 如何将时间戳列转换为日期时间? [复制]

我如何将 Bootstrap 3 Datepicker 自定义为仅没有时间戳的日期

Pandas - 如何根据自定义日历计算两个日期之间的天数[关闭]