下图
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()
Run Code Online (Sandbox Code Playgroud)
即使我有以下情况,也会在错误的区域(GMT)中显示小时:
> df['timestamp'][0]
Timestamp('2014-09-02 18:37:00-0400', tz='US/Eastern')
Run Code Online (Sandbox Code Playgroud)
实际上,如果我注释掉这一行:
ax.xaxis.set_major_formatter(matplotlib.dates.DateFormatter('%I'))
Run Code Online (Sandbox Code Playgroud)
在正确的时区中显示小时。
为什么?
我认为您可以通过在中设置时区来获得所需的功能rcParams
:
import matplotlib
matplotlib.rcParams['timezone'] = 'US/Eastern'
Run Code Online (Sandbox Code Playgroud)
格式化程序可以识别时区,并将时间戳转换为rcParams时区(可能是UTC),而如果不格式化,它将仅使用时间戳并忽略时区。如果我理解正确。
更多阅读:
如果您不想更改rcParams(这似乎很简单),则可以将时区传递给mdates.DateFormatter
。
from dateutil import tz
mdates.DateFormatter('%H:%M', tz=tz.gettz('Europe/Berlin'))
Run Code Online (Sandbox Code Playgroud)
问题是,mdates.DateFormatter
完全忽略你喜欢设置一切plot_date
或xaxis_date
任何你使用或。
归档时间: |
|
查看次数: |
1777 次 |
最近记录: |