matplotlib画X轴时间的显示问题

很久没有在CSDN写博客了,非常地惭愧,在工作、学习上所遇到的难以越积越多,如果没有对问题进行有效的管理,不仅会使人心烦意乱不知所措,而且下次遇到同样的问题,又得四处找答案,浪费时间。废话又开始了。。。。。

今天遇到的问题为,在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数据
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

结果如下:
这里写图片描述
从图中可以看出,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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

结果如下:
这里写图片描述
从图中可以知道,虽然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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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

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

猜你喜欢

转载自blog.csdn.net/qq_37354021/article/details/80295146
今日推荐