matplotlib - 绘制错误的日期时间

时间:2016-02-05 11:38:51

标签: python datetime matplotlib python-datetime

我用matplotlib绘制一个图形,其中x轴有yy-mm-dd hh-mm-ss的时间戳。我在datetime64(pandas系列)中有ts并显示(右)分钟和秒我使用date2num跟随此link中的提示。问题在于它描绘了无意义的日期:enter image description here

import datetime as dt
import matplotlib.pyplot as plt
import matplotlib.dates as md   
for df in dfs:
    datenums=md.date2num(df.toPandas()["timestamp"])
    plt.xticks(rotation=25)
    xfmt = md.DateFormatter('%Y-%m-%d %H:%M:%S')
    ax.xaxis.set_major_formatter(xfmt)
    plt.plot(datenums,x)
    plt.show()

其中df.toPandas()[“timestamp”]是:

0   2015-12-15 03:53:13
Name: timestamp, dtype: datetime64[ns]

我尝试在datetime中转换datetime64,但结果不会改变。

1 个答案:

答案 0 :(得分:0)

如果您的时间戳值为,请使用此值为所有刻度标签创建一个列表,然后将其添加到绘图中,考虑到您的数据与时间戳数组相关

import matplotlib.pyplot as plt
import numpy as np
import datetime

OX_ticks_name = [datetime.datetime.fromtimestamp(x).strftime('%Y-%m-%d %H:%M:%S') for x in arrayTmstmp]
OX_ticks_pos = np.arange(0,len(arrayTmstmp))

fig, ax = plt.subplots(figsize=(16, 9), dpi=100)
...
ax.set_xticks(OX_ticks_pos)
ax.set_xticklabels(OX_ticks_name, rotation=40, horizontalalignment='right', fontsize=10)
plt.tight_layout()
plt.show()

当然,每个刻度的位置和每个刻度的名称都可以根据需要进行配置。