2012-03-01 67 views
2

我正在使用matplotlib交互式查看大型數據集。我想放大/平移視圖而不出於性能原因重新繪製視圖。創建新的x視圖範圍並將其與set_xlim(left,right)一起使用很容易。但似乎沒有一種自動的方式來顯示新的視圖,並根據新的x範圍適當限制y軸的值。matplotlib auto yaxis

autoscale(enable=True, axis='y')找到y最大和最小從全部繪製的數據,並不限於基於x視圖限制的y數據。有沒有這種模式或功能,還是必須使用手動計算的範圍?

下面是一個例子:

#! /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:') 

回答

0

我從來沒有找到一種方式通過matplotlib來確定基於x呈現的y限制。

但是,有兩個因素似乎可以避免這種需要。

  1. matplotlib 1.2.1比我以前使用的版本有很大的性能提升。
  2. 對於OS X,將後端從'MacOSX'更改爲'TkAgg'對於所使用的線條樣式有了很大的性能改進。

總之,收益在10-20倍左右,實現了數據集的實時交互式瀏覽,所以不需要額外的黑客攻擊。

0

對不起,我提交的答案錯誤的問題!

但我應該認爲手動計算範圍並不難。或者,您可以使用plt.ion()並使用放大鏡進行適當放大。