如何创建从纪元时间到 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 中的随机纪元时间戳获取纪元形式的月份开始?