2012-07-04 106 views
3

我需要製作一個橢圓標記作爲繪圖(帶有錯誤條)。經過一番搜索,我想出了Ellipsematplotlib.patches。然後我可以用plt.errorbar畫錯誤欄。但問題是,即使我首先給出錯誤欄命令,錯誤欄總是繪製在前景中,並且在背景上繪製省略號,無論我在程序中給出的順序如何。用橢圓標記製作橢圓標記matplotlib

是否有人知道更好的方法來創建一個橢圓作爲標記(每個點將有不同的偏心度)與誤差棒?或者至少指導我如何把錯誤欄放在後臺?

這裏是什麼,我至今一個小例子:

import matplotlib.pyplot as plt 
from matplotlib.backends.backend_pdf import PdfPages 
from matplotlib.patches import Ellipse 

PlotFileName="test.pdf" 
pdf = PdfPages(PlotFileName) 
fig=plt.figure(1) 
ax1=fig.add_subplot(111) 
plt.xlim([1,4]) 
plt.ylim([2,8]) 
ax1.errorbar([2.5], [5], yerr=[1], fmt="o", color="black", ms=0.1) 
ax1.add_artist(Ellipse((2.5, 5), 1, 1, facecolor="green", edgecolor="black")) 
pdf.savefig(fig) 
pdf.close() 
plt.close() 

,這裏是它的外觀: error bar infront of ellipse

我想要的誤差線在橢圓的背景去。

在此先感謝...

+0

我只是猜測,但你可以嘗試做的情節在兩個步驟:首先劇情只有errorbars(即繪製與errorbars您的數據和某種空的或最小標記),之後繪製相同數據與橢圓作爲標記,但沒有錯誤條(你已經在後臺繪製)? –

+0

謝謝雅各布,但既然我不是一個專業人士,你能指導我如何分兩步進行策劃嗎? – makhlaghi

+0

只需用不同的設置調用兩次「pylab.plot」命令。你能發佈一些最小的示例源代碼嗎? –

回答

2

使用zorder符爲您的情節命令。 從文檔:「爲藝術家設置zorder,首先繪製具有較低zorder值的藝術家。」

import matplotlib.pyplot as plt 
from matplotlib.patches import Ellipse 

fig=plt.figure(1) 
ax1=fig.add_subplot(111) 
plt.xlim([0,5]) 
plt.ylim([0,10]) 
ax1.errorbar([2.5], [5], yerr=[1], fmt="o", color="black", ms=0.1, zorder=1) 
ax1.add_artist(Ellipse((2.5, 5), 1, 1, facecolor="green", edgecolor="black",zorder=2)) 

plt.show() 

exit(0) 
+0

非常感謝!它工作完美。我不知道「zorder」,它非常有用。再次感謝。 – makhlaghi