[转]matplotlib画X轴时间的显示问题

转载自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数据

结果如下:


[转]matplotlib画X轴时间的显示问题_第1张图片
image.png

从图中可以看出,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')

结果如下:

[转]matplotlib画X轴时间的显示问题_第2张图片
image.png

从图中可以知道,虽然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')

结果如下:


[转]matplotlib画X轴时间的显示问题_第3张图片
image.png

从图中可以看到,X轴的时间显示正常了。
最后,要注意一下代码的这一行,这一行是用来设置X轴的时间显示格式。

ax1.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d'))#设置时间标签显示格式

你可能感兴趣的:([转]matplotlib画X轴时间的显示问题)