matplotlib auto yaxis

时间:2012-03-01 07:13:12

标签: python matplotlib

我正在使用matplotlib以交互方式查看大型数据集。出于性能原因,我想缩放/平移视图而不重绘它。创建新的x视图范围并将其应用于set_xlim(left,right)很容易。但似乎没有一种自动方式来显示新视图,y轴根据新的x范围适当限制值。

autoscale(enable=True, axis='y') all 中查找绘制的数据的y max和min,而不是基于x视图限制的y数据。是否有任何此类模式或功能,或者必须set_ylim()与手动计算的范围一起使用?

以下是一个例子:

#! /usr/bin/env python

import matplotlib.pyplot as plt
import numpy as np

plt.ioff()
fig = plt.figure(1)
ax = plt.subplot(111, axisbg='black')

tick = np.arange(10)

ax.grid(b=True, color='white')
ax.autoscale(enable=True, axis='x', tight=False)
ax.autoscale(enable=True, axis='y', tight=True)
ax.plot(tick, color='#ff3333', linestyle='-')

fig.canvas.draw()
raw_input('enter:')

ax.set_xlim(2, 5)
fig.canvas.draw()
raw_input('enter:')    

ax.set_xlim(1, 6)
fig.canvas.draw()
raw_input('enter:')

2 个答案:

答案 0 :(得分:0)

对不起,我提交了一个错误答案的答案!

但我认为手动计算范围并不难。或者您可以使用plt.ion()并使用放大镜适当放大。

答案 1 :(得分:0)

我从来没有找到通过matplotlib来确定基于x的渲染y限制的方法。

然而,有两个因素似乎不需要这样做。

  1. matplotlib 1.2.1比我之前使用的版本有很大的性能提升。
  2. 对于OS X,将后端从“MacOSX”更改为“TkAgg”后,所使用的线型的性能得到了很大改善。
  3. 总之,增益大约为10-20倍,这使得数据集实时交互式浏览,因此不需要额外的黑客攻击。