2012-03-01 2 views
2

Я использую matplotlib для интерактивного просмотра большого набора данных. Я хотел бы увеличить/панорамировать вид, не перерисовывая его по соображениям производительности. Легко создать новый диапазон просмотра х и применить его с помощью set_xlim(left,right). Но, похоже, нет автоматического способа отображения нового представления с соответствующей осью y, ограниченной на основе нового диапазона x.matplotlib auto yaxis

autoscale(enable=True, axis='y') находит y max и min от все данные, нарисованные и не ограниченные данными y на основе предела представления x. Есть ли такой режим или функция, или должен использоваться 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:') 

ответ

0

Я не нашел путь через matplotlib, чтобы определить отображаемые пределы y на основе x.

Однако два фактора, по-видимому, устраняют необходимость этого.

  1. matplotlib 1.2.1 имеет большой прирост производительности по сравнению с предыдущей версией, которую я использовал.
  2. Для OS X, изменение базы данных с «MacOSX» на «TkAgg» показало большие улучшения производительности для используемых стилей линий.

Сумма выигрышей составляла 10-20x, что обеспечивало интерактивный просмотр набора данных в реальном времени, поэтому дополнительных хаков не требовалось.

0

извини, я представил ответ на неправильный вопрос!

Но я должен думать, что это не так сложно вручную рассчитать диапазон. Или вы можете использовать plt.ion() и соответствующим образом приблизить увеличительное стекло.

Смежные вопросы