繁体   English   中英

matplotlib如何调整导航和光标显示

[英]matplotlib how to adjust navigation and cursor display

使用twinx在两个不同的y尺度上绘制两个时间序列时:

ax1 = pp.subplot(111)
ax2 = ax1.twinx()

导航的默认行为似乎是:

  1. zoom / pan将同时控制两个轴
  2. 右下角显示鼠标光标坐标,其中y值为ax2

我经常发现用set_navigate关闭其中一个轴的缩放/平移很有用(感谢这个提示)。 但是,当ax2的导航关闭时,坐标显示也会关闭。

无论如何在不关闭坐标显示的情况下禁用缩放/平移?

更好的是,有没有办法在显示光标坐标时指定两个轴中的哪一个取y值?

[版本信息:python 3.4.3 + matplotlib 1.5.1]

似乎没有简单的方法(ala set_navigate )来做到这一点。 我设法找到了这个问题并对其进行了一些修改以完成我的需要:

class Cursor(object):
    def __init__(self, fig, ax, ax2=None, xfmt=None, yfmt=None):
        self.fig = fig
        self.ax = ax
        self.ax2 = ax2
        self.xfmt = xfmt
        self.yfmt = yfmt
        plt.connect('button_press_event', self)

    def __call__(self, event):
         if event.button == 3 and self.ax2 is not None: # right click
            ax = self.ax2
        elif event.button:
            ax = self.ax
        inv = ax.transData.inverted()
        x, y = inv.transform((event.x, event.y))
        self.fig.canvas.toolbar.set_message('x={} y={}'.format(x if self.xfmt is None else self.xfmt(x), y if self.yfmt is None else self.yfmt(y)))

然后我可以像这样实例化一个Cursor

fig,ax = plt.subplots(1,1)
ax2 = ax.twinx()
Cursor(fig, ax, ax2)

无论两个轴的导航状态如何,左/右单击图将在导航工具栏的右下角显示左/右轴的坐标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM