Python 使用熊猫数据在for循环中绘制水平线?

Python 使用熊猫数据在for循环中绘制水平线?,python,matplotlib,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的水平线,只有熊猫系列的第

我是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中有相同的选项吗

正如我在评论中所说,您似乎误解了
xmin
xmax
的语义,它应该是分数
0≤x≤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]: 
取得

您应该始终提供问题的详细信息。查看代码时,您确实应该在
df\u year
中获得与行数相同的行数,但由于我们没有,我们无法帮助您。从文档字符串中引用“xmin:scalar,可选,默认值:0应介于0和1之间,0是绘图的最左侧,1是绘图的最右侧。”除了第一条水平线外,所有水平线都使用绘图区域外的间隔。。。试试
xmin=j/12,xmax=(j+1/12)
谢谢你的帖子。现在我有了一个不同的图表,但仍然不是我想要的。我正在使用资源管理器,看不到附加图形的选项。但我解释了图形:现在x轴仍然在0和1之间,并且在指定的y值上有12条介于0和1之间的水平线。在有足够的点之前,您无法将图形附加到您的帖子。。。我没有读你的评论,因为我正在准备一个完整的答案,希望(特别是最后一部分)能回答你的问题。亲爱的GBOFI,再次感谢你的解释。我复制粘贴您的代码,从2004年到2016年,仍然是同一个图形,只有一条水平线,值在60到65之间。我认为我的plotpy使用ssh时存在问题。您使用的Python版本是什么?在Python3
3/12==0.25
中,因为除法总是给出浮点数,但在Python2
3/12==0
中,因为它被解释为整数除法。፨ 我是一个傻瓜。。。从您的
print
语句中可以明显看出,您使用的是Python2!请使用plt.axhline(data[j],xmin=j/12.0.xmax=k/12.0),每一位都会找到它的位置。。。(不是整数文本的
12
,而是浮点文本的
12.0
)。我为我的误解感到抱歉。感谢您批准了关于信仰行为的答案!是的,非常感谢。现在它和你放在这里的一样。