python - Matplotlib plot_date 在 UTC 中保持时间,即使使用自定义时区

标签 python matplotlib

我正在使用 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/

相关文章:

python - 如何将字符串输入元组?

python - 将 python 函数上传到 aws lambda

python - 如何通过关键字从列表中获取新列表?

python - 如何为 Python matplotlib.animation 添加随时间变化的标题?

python - 使用 hue 参数在 seaborn 中拆分 fiddle 图

python - Matplotlib 从图中删除补丁

python - 在有两个模型的表单中保存之前设置ForeignKey

python - 根据特定列的值计数添加/删除行

python - 使用 python 将高程 (XYZ) 数据转换为坡度/梯度图

python - 方点等高线图