Matplotlib双刻度鼠标悬停

4

我尝试使用matplotlib的默认GUI组件绘制一些曲线,并且在选择鼠标悬停功能应该选择哪个y轴时遇到了一些问题。默认情况似乎是选择ax2,但我希望改用ax1。有什么简单的方法可以解决吗?

这是我目前用来绘制曲线的代码。

最好的问候,Anders 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()

你能澄清一下问题吗?你是在尝试使用FigureCanvas.mpl_connect()与图形进行交互吗?发布的代码只显示了如何生成图形;你能否发布描述你如何尝试与图形交互的代码? - Steve Tjoa
他在谈论交互式图中右下角的坐标标签。没有回调函数参与,只是默认的绘图。 - matt
1个回答

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)


这应该被接受为答案,它有效。为什么需要更改网格? - dashesy
@dashesy 我建议从 plt.grid 更改为 ax1.grid,这样它就可以明确地设置 ax1 的网格。也许 OP 实际上想要在 ax2 上显示网格,在这种情况下就不需要更改。 - esmit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接