我有很多在x轴上相关的数据,但都围绕非常不同的Y值。 x上的数据也很长,因此很难看到详细信息。我希望能够为数据集手动设置x轴,然后让绘图根据位于手动设置的x轴内的数据点的值来重新缩放y轴本身。

matplotlib有可能吗?

最佳答案

根据来自mdurant的评论,我写了一些最小的示例作为起点:

import pylab as pl

pl.figure()
x = pl.rand(30)
x.sort()
y =  pl.sin(2 * pl.pi * x) + 0.1 * pl.randn(30)
pl.plot(x, y)

def ondraw(event):
    xlim = pl.gca().get_xlim()
    y_sel = y[pl.logical_and(x > xlim[0], x < xlim[1])]
    pl.gca().set_ylim((y_sel.min(), y_sel.max()))

pl.gcf().canvas.mpl_connect('draw_event', ondraw)


您可能需要添加更多events来处理鼠标移动等。

一些评论:


我正在使用pylab,因为它提供了用于生成示例数据的有用功能。但是您也可以导入matplotlib库。
ondraw事件处理程序获取当前轴gca()的当前x极限,在x极限内选择具有相应y坐标的x值,并设置由选定坐标的最小和最大y值确定的新y极限。
使用mpl_connect,我们将事件处理程序附加到当前轴。每次绘制轴-例如由于新的绘图命令或手动用户交互-它调用ondraw来更新y极限。

关于python - Matplotlib比例y轴基于手动缩放的x轴,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25534524/

10-12 21:00