2010-01-24 104 views
4

我嘗試用matplotlib使用默認的gui組件繪製一些曲線,並且在選擇鼠標懸停功能應選擇的兩個y軸中有一些麻煩。默認情況下,似乎是ax2被選中,但我想用ax1代替。這可以通過一些簡單的方法解決嗎?帶雙縮放鼠標的Matplotlib

這是我現在用來繪製曲線的代碼。

最好的問候安德斯Olme

delta=np.median(np.diff(measurementvalues.measvalues)) 
myscale=10 
myrange=(measurementvalues.lowerlimit - delta*myscale, measurementvalues.upperlimit + delta*myscale) 

figure = plt.figure() 
ax1 = figure.add_subplot(111) 
(n, bins, patches) = ax1.hist(measurementvalues.measvalues, 10, range=myrange, normed=0, facecolor='green', alpha=0.75) 

ax2 = ax1.twinx() 
mean = np.average(measurementvalues.measvalues) 
sigma = np.std(measurementvalues.measvalues) 
y = mlab.normpdf(bins, mean, sigma) 

ax2.plot(bins, y, 'r-', linewidth=1) 
ax1.set_xlabel('Measvlues') 
ax2.set_ylabel('Probability') 
ax1.set_title(r'$\mathrm{Histogram\ of\ measvalues:}\ \mu=$'+str(mean)+r'$,\ \sigma=$'+str(sigma)+r'$$') 
plt.grid(True) 

plt.show() 
+0

你能澄清這個問題嗎?你是否試圖使用FigureCanvas.mpl_connect()與圖形進行交互?發佈的代碼只顯示數字如何生成;你能發佈描述你如何與數字交互的代碼嗎? – 2010-01-24 14:57:25

+0

他正在談論交互式地塊右下角的座標標籤。不涉及回調,只是默認情節。 – matt 2011-06-21 04:46:23

回答

2

添加以下調用twinx

ax3 = ax1.figure.add_axes(ax1.get_position(True), sharex=ax1, sharey=ax1, 
     frameon=False) 
ax3.xaxis.set_visible(False) 
ax3.yaxis.set_visible(False) 

後,您還需要改變plt.grid(真),以ax1.grid(真)

+0

這應該被接受爲答案,它的工作原理。爲什麼需要改變網格? – dashesy 2014-08-16 03:47:30

+0

@dashesy我建議從'plt.grid'改爲'ax1.grid',以便明確地設置'ax1'的網格。也許OP實際上想要'ax2'上的網格,在這種情況下,不需要改變它。 – esmit 2014-08-22 21:38:38