matplotlib auto yaxis - PullRequest
       7

matplotlib auto yaxis

2 голосов
/ 01 марта 2012

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

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

Я так и не нашел способ через matplotlib определить пределы рендеринга y на основе x.

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

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

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

0 голосов
/ 22 марта 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...