我用matplotlib绘制一个图形,其中x轴有yy-mm-dd hh-mm-ss的时间戳。我在datetime64(pandas系列)中有ts并显示(右)分钟和秒我使用date2num跟随此link中的提示。问题在于它描绘了无意义的日期:
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,但结果不会改变。
答案 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()
当然,每个刻度的位置和每个刻度的名称都可以根据需要进行配置。