2 回答

TA貢獻(xiàn)1951條經(jīng)驗 獲得超3個贊
根據(jù)您發(fā)布的代碼,創(chuàng)建的圖是正確的。最低 的對象zorder
放在底部,而最高 的對象zorder
放在頂部。您鏈接到的zorder問題已在matplotlib版本1.2.1中修復(fù),因此,如果可能,應(yīng)更新安裝。
在您的第一個子圖中,誤差線繪制在散點上方,因為使用errorbar
會調(diào)用zorder=2
,而scatter
使用zorder=1
-會調(diào)用,這意味著誤差線將覆蓋散點。
在你的第二個插曲,你叫errorbar
用zorder=99
,scatter
用zorder=100
而plot
用zorder=101
-這意味著errorbars將被放置在散點和線下兩種。
之所以legend
在第一個子圖中的行頂部顯示它,而在第二個子圖中的同一行頂部顯示它,是因為您沒有顯式設(shè)置圖例objectazorder
值,這意味著它將使用它的默認(rèn)值(我相信是5)。要更改圖例的zorder,只需使用P.legend(loc="center").set_zorder(102)
其中102是所需的zorder值。
因此,為了產(chǎn)生所需的輸出,必須相應(yīng)地設(shè)置zorder
參數(shù)。由于您尚未在問題中描述所需的輸出,因此我很難“更正”您的代碼,因為我不知道您希望按什么順序繪制對象。

TA貢獻(xiàn)1850條經(jīng)驗 獲得超11個贊
在我看來,新舊軟件的使用總是“利弊”,因此最終我猜這是由用戶決定的,更重要的是(例如新功能與已知的錯誤解決方法等) )。我以前的評論應(yīng)該更清楚一些;避免已知問題(至少在某種程度上)的最簡單方法是使軟件保持最新。
添加回答
舉報