我正在使用 matplotlib 在 python 2.6 中根据时间戳绘制数据。我找到了 plot_date() 函数并且效果很好!但是,时间都是UTC。我阅读了文档,其中说您可以将 tz 参数传递给函数以设置自定义 timezome。这似乎不起作用。即使在传递参数之后,时间仍保留为 UTC。我也试过几种方法都无济于事。
注意事项: 我正在导入一个充满纪元时间的 CSV 文件来生成 X 轴。因此,我正在使用 epoch2num() 从纪元格式转换为 matplotlib 格式。
样本来源:
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import matplotlib.dates as mdates
from pytz import timezone
...
dates = mdates.epoch2num(dates) # Converting my list of dates from epochs
plt.plot_date(dates, data,fmt='-',tz="US/Eastern",xdate=True)
该代码无法沿轴生成正确的时间戳。不过它的图形很好。
还试过:
plt.plot_date(dates,data,fmt='-',tz=timezone('US/Eastern'),xdate=True)
与第一个示例的结果相同。一切都保留在 UTC 中。
为了笑,我在“日期”列表上运行了 num2date() 并打印了输出。值输出为 UTC。然后,我将 tz=timezone('US/Eastern') 添加到 num2date() 调用中,并且值输出是东部的,因为它们应该是。
我还尝试在调用 plot_date 之前将日期“预转换”为东部日期,然后在 plot_date 中省略 tz= 关键字,但值仍然是 UTC。
最后,我编辑了我的 matplotlibrc 文件并将#timezone UTC 更改为#timezone US/Eastern,但仍然没有成功。
要让这些日期在 UTC 之外绘制图表,我缺少什么?
最佳答案
我也在 Matplotlib 1.0.1 中看到了这种行为。
我在调试器中查看了它,恕我直言,参数 tz
被忽略了。该错误位于 matplotlib.axes.Axes.xaxis_date
(文件“axes.py”,第 2679 行)中。
我为此提交了错误报告: https://sourceforge.net/tracker/index.php?func=detail&aid=3176823&group_id=80706&atid=560720
关于python - Matplotlib plot_date 在 UTC 中保持时间,即使使用自定义时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4485607/