我创建了一个Pandas Dataframe,并使用pd.to_datetime函数将'date'列转换为时间序列对象。我试图在Python和Excel中绘制相关图,以查看时间戳是否正确映射。
第一个图是一个带有时间映射点的Excel图。 我试图用Python复制它 - 只有'观察',该图反映了Excel Plot。然而,只要我添加“日期”,情节就变成了意大利面条。
我似乎无法弄清楚为什么会这样 - 有人可以提出建议吗?
我在日期字段中使用了以下行:
CNN006['Date'] = pd.to_datetime(CNN006['Date'])
这正确地将日期转换为时间戳(图片4)
csv文件的链接在这里: https://drive.google.com/open?id=1kctGhXafHYXxC1rSFvdwgvmvLAo2RLsZ
编辑 - 我尝试了另一种修改xticks的方法,但结果好坏参半并没有给我我想要的东西
from matplotlib.dates import DateFormatter
fig, ax = plt.subplots()
plt.xticks(rotation=90)
myFmt = DateFormatter("%Y-%m-%d")
ax.xaxis.set_major_formatter(myFmt)
修改 这是分别为图2和图3的代码 **情节2
fig, ax = plt.subplots()
plt.xticks(rotation=45)
xfmt = mdates.DateFormatter('%Y-%m-%d %H:%M:%S')
ax.xaxis.set_major_formatter(xfmt)
ax.grid()
plt.xticks(rotation=90)
ax.plot(CNN006.Date,CNN006.DailyAvgGasFlowRate)
ax.plot(CNN006.Date,CNN006.DailyAvgWaterRate)
ax.plot(CNN006.Date, CNN006.DailyAvgTorque)
* Plot 3
fig, ax = plt.subplots()
plt.xticks(rotation=45)
xfmt = mdates.DateFormatter('%Y-%m-%d %H:%M:%S')
ax.xaxis.set_major_formatter(xfmt)
ax.grid()
plt.xticks(rotation=90)
ax.plot(CNN006.DailyAvgGasFlowRate)
ax.plot(CNN006.DailyAvgWaterRate)
ax.plot(CNN006.DailyAvgTorque)
解
CNN006['Date'] = pd.to_datetime(CNN006['Date'], format='%d-%m-%Y %H:%M:%S')
ax = CNN006.set_index('Date').plot()
xfmt = mdates.DateFormatter('%d-%m-%Y %H:%M:%S')
ax.xaxis.set_major_formatter(xfmt)
plt.xticks(rotation=90)
我以前假设使用.to_date功能,它会自动将日期字符串转换为适当的时间序列,而不明确要求格式化传入。我现在意识到情况并非如此,我们必须指定格式在.to_date函数中,以便MatPlotLib不会与不符合用户指定的“日期”操作的传入日期(即我的代码中的xmft)混淆。