用pandas数据绘制for循环中的水平线?

时间:2017-11-06 12:00:01

标签: python matplotlib

我是python的初学者,我试图绘制一个大熊猫时间序列的年平均水平线,形状为(12,),表示12年。我试过这个:

plt.figure()
j=0
for i in range(0,np.shape(df_year)[0]):
    plt.axhline(periodData_yearAvg[i],xmin=j,xmax=j+1)
    print j
    print periodData_yearAvg[i]
    j=j+1

然而,我得到的是从0到1的水平线,只有熊猫系列的第一个元素。

我知道,例如在MATLAB中我们已经"坚持"在同一图中绘制新值的命令。 Python中有相同的选项吗?

1 个答案:

答案 0 :(得分:0)

正如我在评论中所说,你似乎误解了xminxmax的语义,它应该是x轴的分数0≤x≤1

在您的特定用例中使用它们的正确方法是

In [42]: N, n = 12, 12.0  # an integer and a float, so it works also in Python 2
In [43]: data = np.random.randint(50, 80, N)
In [44]: for j in range(N):
    ...:     k = j+1
    ...:     plt.axhline(data[j], xmin=j/n, xmax=k/n)

为了获得更好的外观,您可以完成

In [45]: plt.xlim((2016-N,2016));
In [46]: plt.xticks(np.linspace(2016-N, 2016, N+1));
In [47]: plt.grid();  # of course gridding is optional
In [48]: 

获得 enter image description here