使用分类轴

时间:2017-08-07 08:45:09

标签: python matplotlib

我有以下数据框,我的目标是在同一图表上绘制最大数据和最小数据,使用Month_Day作为x轴,但只打印' Jan',' 2月& #39;,' Mar'等...

Month_Day  max  min
 0    Jan-01  243   86
 1    Jan-02  230   90
 2    Jan-03  233  104
 3    Jan-04  220   73
 4    Jan-05  224   71

但是一旦我包含了日期,它就会出错。

dates = pd.date_range('1/1/2015','31/12/2015', freq='D')
plt.plot(tmax, '-r', tmin, '-b')
#plt.plot(dates, tmax, '-r', dates, tmin, '-b') <- this is the line i plot dates as axis
plt.fill_between(range(len(tmin)), tmin, tmax, facecolor='gray', alpha=0.25)
plt.grid(True)

给出错误:

error: ordinal must be >= 1

1 个答案:

答案 0 :(得分:0)

您可以使用xaxis.set_major_formatter()。 这是一个简单的例子:

import datetime
import random
import matplotlib.pyplot as plt

# make up some data
x = [datetime.datetime.now() + datetime.timedelta(days=i) for i in range(180)]
y = [i+random.gauss(0,1) for i,_ in enumerate(x)]

p1 = plt.subplot(211)
p1.xaxis.set_major_formatter(mdate.DateFormatter('%b', None))

# plot
plt.plot(x,y)
# beautify the x-labels
plt.gcf().autofmt_xdate()

plt.show()

输出

enter image description here