如何在x轴线图上显示年份?

时间:2016-11-17 21:02:57

标签: python python-3.x pandas matplotlib jupyter

我尝试使用pandasmatplotlib绘制一些数据。

考虑这些数据:

years = [i for i in range(2005, 2016)]
values = [49.929266640000002, 45.441518010000003, 49.762879810000001, 52.849612180000001, 57.618790150000002, 47.750615240000002, 47.508212309999998, 37.414841590000002, 45.441518010000003, 47.750615240000002, 49.929266640000002]

如果我绘制数据:

lineplt = pandas.Series(values, name='Some City 2005 - 2015')
lineplt.index = years
lineplt.plot(title = 'Rate some city 2005 - 2015', legend=True)

一切顺利:

enter image description here

但是,如果尝试的时间少于11年,x axis不会显示年份:

例如,请考虑以下数据:

years = [i for i in range(2008, 2016)]
values = [49.929266640000002, 45.441518010000003, 49.762879810000001, 52.849612180000001, 57.618790150000002, 47.750615240000002, 47.508212309999998, 37.414841590000002]
lineplt = pandas.Series(values, name='Some city 2008 - 2015')
lineplt.index = years
lineplt.plot(title = 'Rate some city 2008 - 2015', legend=True)

它显示:

enter image description here

是否有解决方案,可能是我遗漏的一些参数或参数,以显示从2008年到2015年的年份而不是索引作为单个数字?

提前致谢!

2 个答案:

答案 0 :(得分:2)

解决问题的最简单方法是明确使用datetime个对象作为索引。熊猫为此提供了一个实用工具:

years = pd.date_range('2008','2015', freq='AS')

freq参数采用偏移量。您可以创建自己的版本,也可以使用built-in aliases

之一

答案 1 :(得分:0)

你应该使用类似的东西:

fig = plt.figure()                                                               
ax = fig.add_subplot(1,1,1)    

ax.get_xaxis().get_major_formatter().set_useOffset(False)
ax.set_xlim((2008, 2016))