2010-01-24 2 views
4

Я пытаюсь построить некоторые кривые с matplotlib, используя компонент gui по умолчанию, и у вас есть некоторые проблемы, чтобы выбрать, какую из двух у-осей следует выбирать с помощью мыши. Случай с положением, по-видимому, состоит в том, что 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() для взаимодействия с фигурой? Выведенный код показывает только, как создается цифра; можете ли вы опубликовать код, описывающий, как вы пытаетесь взаимодействовать с фигурой? –

+0

Он говорит о координатах в нижней правой части интерактивных сюжетов. Никаких обратных вызовов, просто график по умолчанию. – matt

ответ

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 (True) для ax1.grid (True)

+0

это должно быть принято как ответ, оно работает. Зачем нужно менять сетку? – dashesy

+0

@ dashesy Я рекомендую изменить с 'plt.grid' на' ax1.grid', чтобы он явно устанавливал сетку для 'ax1'. Возможно, OP фактически хочет сетку на 'ax2', и в этом случае нет необходимости ее менять. – esmit

Смежные вопросы