Matplotlib基于手动缩放的x轴缩放y轴

时间:2014-08-27 18:28:52

标签: python matplotlib plot

我有很多在x轴上相关的数据,但都是以非常不同的Y值为中心。 x上的数据也很长,所以很难看到细节。我希望能够为数据集手动设置x轴,然后让绘图根据手动设置x轴内的数据点的值重新缩放y轴。

matplotlib可以吗?

1 个答案:

答案 0 :(得分:2)

根据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限制。