我有很多在x轴上相关的数据,但都是以非常不同的Y值为中心。 x上的数据也很长,所以很难看到细节。我希望能够为数据集手动设置x轴,然后让绘图根据手动设置x轴内的数据点的值重新缩放y轴。
matplotlib可以吗?
答案 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限制。