下图
import matplotlib
f= plt.figure(figsize=(12,4))
ax = f.add_subplot(111)
df.set_index('timestamp')['values'].plot(ax=ax)
ax.xaxis.set_major_locator(matplotlib.dates.HourLocator(interval=1))
ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%I'))
plt.show()
在错误的区域 (GMT) 呈现小时,即使我有:
> df['timestamp'][0]
Timestamp('2014-09-02 18:37:00-0400', tz='US/Eastern')
事实上,如果我注释掉这一行:
ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%I'))
小时在正确的时区呈现。
为什么?
最佳答案
我认为您可以通过在 rcParams
中设置时区来获得所需的功能:
import matplotlib
matplotlib.rcParams['timezone'] = 'US/Eastern'
格式化程序是时区感知的,会将时间戳转换为您的 rcParams 时区(可能是 UTC),而如果您不格式化它,它只会采用时间戳并忽略时区。如果我没理解错的话。
更多阅读:
关于python - Matplotlib 忽略时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25654944/