在图表x轴上显示的日期

时间:2018-11-15 15:59:57

标签: python matplotlib plot dataformat

我正在处理一个很大的数据集。该文件具有8列(y1-y8),其中包含数字数据(例如21.3456)和1列(x),其中包含日期数据:(format: m/d/Y)

我想随时间对8列进行对比,而绘图图似乎是最好的选择。

这是我的代码:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import matplotlib.cbook as cbook
import matplotlib.dates as mdates
import datetime
from matplotlib.dates import DateFormatter

%matplotlib inline

df = pd.read_excel('Masterfile_allSTW.xlsx', 'Sheet1')

#data
#df.TS_TIMESTAMP = df.TS_TIMESTAMP.astype(str)
x = df['dates']
y1 = df['Rtemp_EG']
y2 = df['Rtemp_EG+1.OG']
y3 = df['Rtemp_1.OG']
y4 = df['Rtemp_2.OG']
y5 = df['Rtemp_3.OG']
y6 = df['Rtemp_4.OG']
y7 = df['Rtemp_5.OG']
y8 = df['Rtemp_6.OG']

#plot data
fig, ax = plt.subplots(figsize=(15,7))
df.plot(ax=ax)

#set ticks every week
ax.xaxis.set_major_locator(mdates.DayLocator())
#set major ticks format
ax.xaxis.set_major_formatter(mdates.DateFormatter('%m %d'))

运行脚本,情节如下所示:

enter image description here

我对绘图图的外观非常满意,唯一缺少的是x轴上的日期描述(应该来自('dates')列。我有一种感觉问题出在df.plot(ax=ax)行之内,但我不确定。

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

实际上,问题出在df.plot(ax=ax)。尝试将其替换为df.plot(x='dates')以针对单个特定列进行绘制。

答案 1 :(得分:0)

如果其他答案在这里没有帮助,我建议将dates列作为绘图的索引。如果在某些情况下日期是一列,似乎会出现问题,但我还不了解为什么会如此。

df.set_index("dates").plot(ax=ax, x_compat=True)