from datetime import datetime
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
dates = ['2016010106','2016010107','2016010108','2016010109','2016010110','2016010111','2016010112','2016010113',
         '2016010114','2016010115','2016010116','2016010117','2016010118']
#把string格式的日期转换成datetime格式
xs = [datetime.strptime(d, '%Y%m%d%H') for d in dates]
ys = ['36','29','26','22','29','38','48','55','56','60','55','48','51']
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
#指定X轴的以日期格式(带小时)显示
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y%m%d%H'))
#X轴的间隔为小时
ax.xaxis.set_major_locator(mdates.HourLocator())
plt.plot(xs, ys)
plt.gcf().autofmt_xdate()  
plt.show()

运行结果如下:
这里写图片描述

**如果天为间隔,修改如下:
xs = [datetime.strptime(d, ‘%Y%m%d%H’).date() for d in dates]
ax.xaxis.set_major_formatter(mdates.DateFormatter(‘%Y%m%d’))
ax.xaxis.set_major_locator(mdates.DayLocator())**

有一个网友碰到这样一个问题,如果直接使用%H来设置 坐标 轴显示,会发现格式化的数据显示为00到23,然后再到00,它不会显示24出来。为了解决这个问题,可以采用自定义 坐标 字符串的方式来显示,不过 时间 变化就是在00到24 小时 之间了,只能使用整数来表示。 具体内容可参考下文: 深入浅出 matplotlib (35):设置 坐标 轴个性化显示标签 https://mysoft.blog.csdn.net/article/details/111479756 在这里演示的例子如下: #深入浅出matplot. 2. 源码 将data.txt中的数据读入,用 matplotlib 中的pyplot 出,x轴为 时间 。 数据文本 data.txt,除了第一行表头外,每一列都用制表符Tab(\t)隔开。 原创 粉丝 喜欢 评论 等级 访问 积分 排名 2018/06/01 69 134 266 64 5 309132 3345 12956 2018/06/05 72 137 267 65 5 312383 3390 1 from matplotlib .dates import DateFormatter, WeekdayLocator, DayLocator, MONDAY,YEARLY获取每月数据 monthdays = MonthLocator() 获取每个周一数据 import matplotlib as mpl import datetime as dtfig = plt.figure() ax2 = fig.add_subplot(212) date2_1 = dt.datetime(2008,9,23) date2_2 = dt.datetime(200 ValueError: could not convert string to float: '2020-02-05' 源数据是一个Excel 文件(KMI.xls), 大概如此: matplotlib 坐标 日期太多重叠在一起,减少横 坐标 数量 使用 matplotlib 图时,横 坐标 是日期,然后横 坐标 太多了,都重叠在一起。下图所示,横 坐标 都重叠在一起。网上查了很多资料,大部分都说要旋转横 坐标 ,或者是手动设定横 坐标 ,都不满足我的需求,我就想找个方法让图形自动生成横 坐标 ,也不用太多。 # 下图代码 plt.plot(df['date'], df['y], color='orange') plt.scatter(df['date'], df['y1'], color='red') plot.s