簡體   English   中英

如何在matplotlib中繪制平均線?

[英]how to plot an average line in matplotlib?

我有2個列表使用matplotlib繪制時間序列圖

r1=['14.5', '5.5', '21', '19', '25', '25']
t1=[datetime.datetime(2014, 4, 12, 0, 0), datetime.datetime(2014, 5, 10, 0, 0), datetime.datetime(2014, 6, 12, 0, 0), datetime.datetime(2014, 7, 19, 0, 0), datetime.datetime(2014, 8, 15, 0, 0), datetime.datetime(2014, 9, 17, 0, 0)]

我編寫了使用這兩個列表繪制圖形的代碼,如下所示:

xy.plot(h,r1)
xy.xticks(h,t1)
xy.plot(r1, '-o', ms=10, lw=1, alpha=1, mfc='orange')
xy.xlabel('Sample Dates')
xy.ylabel('Air Temperature')
xy.title('Tier 1 Lake Graph (JOR-01-L)')
xy.grid(True)
xy.show()

我添加了這組代碼以繪制列表r1的平均值,即:

avg= (reduce(lambda x,y:x+y,r1)/len(r1))
avg1.append(avg)
avg2=avg1*len(r1)
xy.plot(h,avg2)
xy.plot(h,r1)
xy.xticks(h,t1)
xy.plot(r1, '-o', ms=10, lw=1, alpha=1, mfc='orange')
xy.xlabel('Sample Dates')
xy.ylabel('Air Temperature')
xy.title('Tier 1 Lake Graph (JOR-01-L)')
xy.grid(True)
xy.show()

但是代碼開始拋出錯誤,提示:

Traceback (most recent call last):
  File "C:\Users\Ayush\Desktop\UWW Data Examples\new csvs\temp.py", line 63, in <module>
    avg= (reduce(lambda x,y:x+y,r1)/len(r1))
TypeError: unsupported operand type(s) for /: 'str' and 'int'

matplotlib中是否有任何直接方法可將平均線添加到圖中? 感謝幫助..

r1是一個字符串列表,而不是實際的floats/ints因此顯然您不能將字符串除以int,您需要在傳遞lambda之前將其強制轉換為float或將列表內容轉換為float ,然后再傳遞它:

r1 = ['14.5', '5.5', '21', '19', '25', '25']
r1[:] = map(float,r1)

所做的更改確實有效:

In [3]: r1=['14.5', '5.5', '21', '19', '25', '25']    
In [4]: avg= (reduce(lambda x,y:x+y,r1)/len(r1))
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-91fbcb81cdb6> in <module>()
----> 1 avg= (reduce(lambda x,y:x+y,r1)/len(r1))    
TypeError: unsupported operand type(s) for /: 'str' and 'int'    
In [5]: r1[:] = map(float,r1)    
In [6]: avg= (reduce(lambda x,y:x+y,r1)/len(r1))    
In [7]: avg
Out[7]: 18.333333333333332

同樣,使用sum將更容易獲得平均值:

avg = sum(r1) / len(r1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM