X轴上的年份值

时间:2018-08-10 04:19:32

标签: python matplotlib

尝试为数据框创建图形:

   year  month    k_mean  k_min  k_max  k_count
0  1994      1  3.548387    2.0    5.0      9.0
1  1994      2  4.500000    2.0    7.0     15.0
2  1994      3  4.387097    2.0    7.0     16.0
3  1994      4  4.433333    1.0    9.0     16.0
4  1994      5  4.806452    2.0    7.0     20.0

x轴显示记录的索引号,而不是年列的值。 enter image description here

我的代码是:

import matplotlib.pyplot as plt
x0=result.year.astype(np.int32).unique()
y1=result.k_max.astype(np.int32)
x0, y1.plot(label='1')
y2=result.k_count.astype(np.int32)
x0, y2.plot(label='2')
plt.legend(loc='best')
plt.show()

怎么了?理想情况下,我想要年份和月份。谢谢。

2 个答案:

答案 0 :(得分:0)

如果您使用的是Pandas数据框(名称为df),则可以使用以下简单命令制作图形:

ax=plt.gca()
df.plot(kind='line',x='month',y='k_max',ax=ax)
df.plot(kind='line',x='month',y='k_count',color='blue',ax=ax)
plt.show()

enter image description here

但是,如果要同时显示年和月,则一种方法可能是在绘制“年”和“月”之前将它们连接起来并创建新的x变量,如下所示: 1994-1 1994-2 ...

答案 1 :(得分:0)

要用年和月作图,最好以这种方式调整df:

result['date'] = pd.to_datetime(result['year'].astype(str)+'-'+result['month'].astype(str), format='%Y-%m').dt.strftime('%Y-%m')

它创建一个新列date可用作x轴:

   year  month    k_mean  k_min  k_max  k_count     date
0  1994      1  3.548387    2.0    5.0      9.0  1994-01
1  1994      2  4.500000    2.0    7.0     15.0  1994-02
2  1994      3  4.387097    2.0    7.0     16.0  1994-03
3  1994      4  4.433333    1.0    9.0     16.0  1994-04
4  1994      5  4.806452    2.0    7.0     20.0  1994-05

之后,您可以使用它来绘制图形中的2列:

import matplotlib.pyplot as plt
result.plot(x='date', y=['k_max', 'k_count'])
plt.show()

输出:

enter image description here