[英]Combining a line from plot to marks from errorbar in matplotlib legend
[英]matplotlib errorbar continous line plot
我在使用帶有matplotlib的錯誤欄時遇到了這個有趣的問題。 我有兩個列表:“迭代”,它是一個范圍從0到999的整數值的列表; 和“平均值”,這是1000個大小列表,帶有真實的負值。
如果未指定“ yerr”屬性,則會得到:
誤差線(迭代次數,平均值)
但是,如果我指定yerr屬性但設置為0,則會得到以下信息:
誤差線(迭代次數,平均值,yerr = 0)
在我看來,兩張圖片應該相同,但是第二張圖片是由小的水平線組成的,而第一張圖片似乎是連續的。
當我將數組作為yerr傳遞時,問題就來了(大小:1000,所有值都設置為0,除了一些實際的std-error值(其中index%50 == 0,以便不使圖像過於擁擠))。
誤差線(迭代次數,平均值,yerr = stderr)
我想得到一張主線是連續的圖像(就像第一幅圖像一樣),但是我卻得到了一個凌亂的圖像,就像第二幅圖像一樣。 我已經嘗試了很多事情,例如修改線型參數,但仍然不斷獲得類似第一張圖片的信息(每隔50步的時間間隔帶有誤差條)
難道我做錯了什么? 有可能做我想做的事。
更新1
正如David在評論中所說,出現水平線是因為stderr的默認形狀為0。我認為值為0不會顯示任何誤差線。 因此,我只需要避免在將其設置為0的地方繪制誤差線(誤差線僅在50、100、150、200、250 ... 1000中)。
更新2(和解決)
David在此處添加了解決方案:
# plot all points without error bars
plot(iterations, average)
# plot errorbars for every 50th point
errorbar(iterations[::50], average[::50], yerr=stderr[::50], linestyle='None')
我只是添加linestyle ='None'以避免在每個yerr條之間繪制線。
非常感謝!
好吧,您要求提供錯誤欄,並且得到了它們。 相反,如果未在參數列表中指定yerr
,則錯誤欄的文檔指出“如果yerr不為None,則繪制垂直錯誤欄 ”。
我不理解使用errorbar
並設置yerr=0
的目的,但是yerr=0
錯誤欄顯示為水平小線,這是因為垂直延伸為零的錯誤欄的樣式。
如果要指示許多數據點的錯誤,最好使用陰影背景指示錯誤區域。 這可以通過fill_between
函數來實現
編輯:在注釋中使用提煉的問題,繪圖代碼可以是
# plot all points without error bars
plot(iterations, average)
# plot errorbars for every 50th point
errorbar(iterations[::50], average[::50], yerr=error[::50])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.