2013-11-22 73 views
4

我想繪製共享相同x軸的不同y軸的曲線。我之前使用過twinx函數,但它在圖的不同側繪製它們。有沒有辦法在左側繪製他們兩個。我正在尋找類似以下的東西enter image description here圖左側的兩個y軸

但兩個軸都在同一側。上例的代碼是here

在不同的不行,可以畫出一個曲線在一些特定的順序,請告訴我顯示爲紅色是默認twinx()行爲Z順序沒有爲twinx

+1

請包括示例代碼來生成這個,鏈接腐 – tacaswell

+0

因爲它是一個標準的matplotlib例子,我把鏈接。我的問題也不同,我把這個數字說清楚。 – imsc

+0

在軸上使用zorder,而不是在線上。 –

回答

11

工作。 example中的額外修改適用於以綠色顯示的內容。

您可以修改兩個類似於​​的新軸,但選擇left脊柱並應用負偏移量。所以添加/改變與例如:

par1.spines["left"].set_position(("axes", -0.4)) # red one 
par2.spines["left"].set_position(("axes", -0.2)) # green one 

make_patch_spines_invisible(par1) 
make_patch_spines_invisible(par2) 

par1.spines["left"].set_visible(True) 
par1.yaxis.set_label_position('left') 
par1.yaxis.set_ticks_position('left') 

par2.spines["left"].set_visible(True) 
par2.yaxis.set_label_position('left') 
par2.yaxis.set_ticks_position('left') 

enter image description here

從線的zorder僅考慮到軸內(或使其出現?),因爲你必須在彼此的頂部分離軸,你應該修改軸的zorder

host.set_zorder(1) 
par1.set_zorder(2) 
par2.set_zorder(3) 

注意,host有一個白色的背景,將其放置在上面會隱藏其他行,除非你設置的背景是反式家長。

+1

什麼是對象par1,par2? – spencerlyon2

+3

它們是'axes'對象,來自imsc顯示的示例,請參閱:http://matplotlib.org/examples/pylab_examples/multiple_yaxis_with_spines.html 我只顯示了修改,也許imsc可以包含原始代碼他的開場白。 –

+2

您也可以使用:host.spines [「left」] .set_edgecolor(p1.get_color())'等來改變刺的顏色。 – farenorth