如何创建从纪元时间到 matplotlib 可以使用的可绘制日期

Posted

技术标签:

【中文标题】如何创建从纪元时间到 matplotlib 可以使用的可绘制日期【英文标题】:How to create plottable dates from epoch time to something matplotlib can use 【发布时间】:2019-04-22 09:18:00 【问题描述】:

第一次发帖,请多多包涵。我花了大约 15 个小时试图弄清楚这一点,但无济于事。

我有一堆以毫秒为单位的纪元格式的时间戳数据。 Pressure/Time Data

time = pd.to_datetime(data['Time'], unit='ms')

这会输出一系列 datetime64 数据

0     2018-11-14 19:40:55.184
1     2018-11-14 19:50:55.324
2     2018-11-14 20:05:54.879
Name: Time, Length: 400, dtype: datetime64[ns]

所以,我完全迷失了方向。 Matplotlib 显然不绘制 datetime64 数据。

plt.plot(time, pressure)

matplotlib 绘制的内容,x 轴上的时间数据无法辨认:

那么,如何解决这个问题?我的意思是,excel 和 matlab 可以很容易地绘制这些数据。这里到底出了什么问题?

最终编辑:

我能够将问题隔离为旧版本的 matplotlib 导致问题。在我遇到问题的环境中,我使用的是 matplotlib 2.1.0 版。如果我在 3.0.0 版上运行,问题就不再存在。这纯粹是环境问题,与代码无关。

【问题讨论】:

见***.com/questions/1574088/… 您不知道time 在这里是什么,但如果您定义了time = data['Time2'],则绘图看起来像this,它在轴上的日期时间格式为%d %H:%M .在询问有关不良行为的问题时,请确保始终提供minimal reproducible example。 为了清楚起见,我编辑了我的原始问题。沿 x 轴的日期格式在 '%d %H: %M' 格式中不起作用。 Matplotlib 似乎正在为我将其转换为其他数据类型。 正如我上面的评论试图传达的那样,matplotlib 确实 以所需的格式显示日期时间。如果它为您不这样做,您可能需要提供minimal reproducible example 和该示例生成的图片(而不是其他图片)。然后提供所有允许重现的信息,即正在使用的库版本、运行代码的方式等。 @ImportanceOfBeingErnest 这是导致问题的 matplotlib 的旧版本。由于您能够成功运行代码,这让我质疑发生了什么。我一直在试用 IBM Watson,但他们不提供更新的软件包。我原以为这些 pacakges 可以正常工作,因为它是 IBM 托管的。我通过我的 Anaconda 安装在本地运行代码并且问题为零。感谢您的帮助。 【参考方案1】:

我能够将问题隔离为旧版本的 matplotlib 导致问题。在我遇到问题的环境中,我使用的是 matplotlib 2.1.0 版。如果我在 3.0.0 版上运行,问题就不再存在。这纯粹是环境问题,与代码无关。

【讨论】:

以上是关于如何创建从纪元时间到 matplotlib 可以使用的可绘制日期的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Unix 纪元时间转换并在 Python 中考虑夏令时?

如何从 Perl 中的随机纪元时间戳获取纪元形式的月份开始?

如何从 gmtime() 的时间 + 日期输出中获取纪元以来的秒数?

将日期从人类可读格式转换为纪元失败

如何将csv数据加载到matplotlib?

从纪元时间戳列中仅检索具有今天日期的记录