2016-09-29 14 views
1

我已經創建了一個函數來繪製許多類似的等高線圖。我正在展示我正在做的最簡單的形式。在這個最小的例子中,我只想在(0,0)A,(3,0)B,(3,3)C,(0,3)D處打勾,其中A,B,C,D是標籤的蜱蟲。我可以把它放到A和B的位置上。當我引入twiny()來創建C和D刻度時,這些縫隙可以繼續工作。蜱不會放在預期位置,並且長寬比被破壞。我嘗試從mpl_toolkits.axes_grid1使用host_subplot,但它沒有解決這個問題。用twiny繪製的python()不會定位刻度並破壞縱橫比

import matplotlib 
import numpy as np 
import matplotlib.mlab as mlab 
import matplotlib.pyplot as plt 

def plot2DFS(fign,x,y,z): 

    fig = plt.figure(fign) 
    ax = fig.add_subplot(111, adjustable='box-forced', aspect='equal') 
    ax.set_title('Iso-surf contour') 
    ax.contour(x, y, z) 

    ax.spines['left'].set_position('center') 
    ax.spines['right'].set_color('none') 
    ax.spines['bottom'].set_position('center') 
    ax.spines['top'].set_color('none') 

    ax.tick_params(axis='y',which='both', right='off', left='off', labelleft='off') 
    ax.tick_params(axis='x',which='both', bottom='off', top='off') 

    ax.xaxis.set_ticks([0.0,3.0]) 
    ax.xaxis.set_ticklabels(['A','B']) 

    bx = ax.twiny() 
    bx.tick_params(axis='x',which='both', bottom='off', top='off') 
    bx.xaxis.set_ticks([0.0,3.0]) 
    bx.xaxis.set_ticklabels(['D','C']) 

    return 

delta = 0.025 
x = np.arange(-3.0, 3.0, delta) 
y = np.arange(-2.0, 2.0, delta) 
X, Y = np.meshgrid(x, y) 
Z = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) 
plot2DFS(1,X,Y,Z) 
plt.show() 

回答

0

長寬比很好,你看到一個完美的圓圈,不是嗎?

關於標籤和它們的位置,你需要告訴matplotlib你需要相同的x限制。將bx.set_xlim(ax.get_xlim())放在函數的末尾。

+0

縱橫比是正確的,但看看圖像發生了什麼。這些座標軸不在邊界上,也不在自動位置。另外,如果你不保存並且簡單地告訴python顯示()該圖,那麼該軸與邊界一起移動而與圖像縮放無關。 – Lp13

+0

我不清楚究竟是什麼問題。對我而言,情節看起來不錯,但我不知道你在努力達到什麼目的。 – ImportanceOfBeingErnest