簡體   English   中英

matplotlib errorbar連續線圖

[英]matplotlib errorbar continous line plot

我在使用帶有matplotlib的錯誤欄時遇到了這個有趣的問題。 我有兩個列表:“迭代”,它是一個范圍從0到999的整數值的列表; 和“平均值”,這是1000個大小列表,帶有真實的負值。

如果未指定“ yerr”屬性,則會得到:

誤差線(迭代次數,平均值)

img1

但是,如果我指定yerr屬性但設置為0,則會得到以下信息:

誤差線(迭代次數,平均值,yerr = 0)

img2

在我看來,兩張圖片應該相同,但是第二張圖片是由小的水平線組成的,而第一張圖片似乎是連續的。

當我將數組作為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.

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