Матплотлиб автомасштаб - PullRequest
9 голосов
/ 09 июля 2010

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

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

Ответы [ 2 ]

12 голосов
/ 09 июля 2010

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

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()

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

1 голос
/ 09 июля 2010

Взгляните на веб-сайт Эли Бендерски , в частности этот пост .Пример внизу поста можно скачать.Позволяет установить, будет ли ось x следовать за графиком или останется статичной, пока ось y изменяется вместе с данными.

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