转载自matplotlib画X轴时间的显示问题
今天遇到的问题为,在jupyter notebook上用matplotlib画一组与时间有关的数据,结果X轴的时间显示出现了点问题,主要代码片如下:
#画时间曲线的函数
def plot_curve1(data,title):
plt.figure(figsize=(15,5))
plt.title(title)
plt.plot(data,'o-')
plt.show()
data1,data2=read_data() #读取数据
print(data1.head(10)) #打印前10行数据
plot_curve1(data1,'data1') #画data1数据
结果如下:
从图中可以看出,x轴显示了5个时间点,但我想要显示每一天,即2014-09-01到2014-09-30。于是我百度了一下matplotlib的官方文档,了解到了xticks的用法,于是又修改了代码。
代码如下:
def plot_curve1(data,title):
fig1 = plt.figure(figsize=(15,5))
plt.xticks(pd.date_range('2014-09-01','2014-09-30'),rotation=90)#设置时间标签显示格式
plt.title(title)
plt.plot(data,'o-')
plt.show()
data1,data2=read_data() #读取数据
print(data1.head(10))
plot_curve1(data1,'data1')
结果如下:
从图中可以知道,虽然X轴显示了30天,但是显示有问题,不能显示月份和日期,所以又去百度了一下,发现一个非常有借鉴意义的博客,链接在此: Matplotlib绘图双纵坐标轴设置及控制设置时间格式 - 推酷,通过该博客,我又修改了代码,代码如下:
import matplotlib.dates as mdate
def plot_curve1(data,title):
fig1 = plt.figure(figsize=(15,5))
ax1 = fig1.add_subplot(1,1,1)
ax1.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d'))#设置时间标签显示格式
plt.xticks(pd.date_range('2014-09-01','2014-09-30'),rotation=90)
plt.title(title)
plt.plot(data,'o-')
plt.show()
data1,data2=read_data() #读取数据
print(data1.head(10))
plot_curve1(data1,'data1')
结果如下:
从图中可以看到,X轴的时间显示正常了。
最后,要注意一下代码的这一行,这一行是用来设置X轴的时间显示格式。
ax1.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d'))#设置时间标签显示格式