2010-07-09 2 views
8

Мне нужно получить график, который автоматически подбирает данные, используя matplotlib. Это код, который я получил:Matplotlib autoscale

import matplotlib.pyplot as plt 
from matplotlib.collections import LineCollection 
.... 
lines = LineCollection(mpl.line_holder, colors=mpl.colorholder , linestyle='solid') 
plt.axes().add_collection(lines) 
plt.axes().set_aspect('equal', 'datalim') 
plt.draw() 
plt.show() 

Это создает сюжет, но окно всегда одинакова (0- ~ 0,8), независимо от того, что данные, даже если все данные не выходит, что окно. Полученное окно не имеет возможности уменьшать масштаб, только в, поэтому это серьезная проблема. Я не могу найти нигде, где установлен какой-либо размер, и я не могу найти информацию о том, какие значения по умолчанию. Мне нужно окно для автоматической установки данных, но я не могу найти какую-либо функцию, которая делает это (по какой-то причине autoscale_on (True) этого не делает). Данные сильно изменяются, поэтому установка жестких ограничений не является вариантом. Как я могу отобразить это правильно?

ответ

10

Не уверен, что это то, что вы хотели, но я могу изменить его, если это не то, что вы искали.

import matplotlib.pyplot as plt 
from matplotlib.collections import LineCollection 

import pylab as p 

fig = plt.figure() 
pts1 = [] 
pts2 = [] 
for i in range(100): 
    pts1.append([i,i]) 
    pts2.append([-i-3,-i]) 
lines = LineCollection([pts1,pts2], linestyles='solid') 
subplt = fig.add_subplot(111,aspect='equal') 
subplt.add_collection(lines) 
subplt.autoscale_view(True,True,True) 
p.show() 

Надеюсь, что это поможет.

+4

autoscale_view (True, True, True) исправил проблему. Теперь, если бы я мог просто найти объяснение того, что это технически делает в ужасной документации. – Elliot

+0

Должно быть где-то здесь: http://matplotlib.sourceforge.net/api/axes_api.html. Однако документация не слишком хороша. – River

1

Посмотрите на Eli Bendersky's Website, в частности this post. Пример в нижней части сообщения можно загрузить. Это позволяет вам установить, будет ли ось x следовать графику или останется статичным, пока ось y изменится с данными.