2010-07-09 7 views
8

Matplotlib kullanarak verileri otomatik olarak dolduran bir çizim almam gerekiyor. Bu benim verildi kod şudur: Ancak pencere hep aynıdır, bu bir komplo oluştururMatplotlib 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) olursa olsun verilerin ne, tüm verilerin dışarıdan olsa bile penceresi. Sonuçta ortaya çıkan pencerenin yalnızca içeriden uzaklaştırma yeteneği yoktur, bu yüzden bu büyük bir problemdir. Herhangi bir boyutlandırma ayarının olduğu herhangi bir yeri bulamıyorum ve ne varsayılanların ayrıntılarını bulabilirim. Verileri otomatik olarak sığdırmak için pencereye ihtiyacım var, ancak bunu yapan herhangi bir işlevi bulamıyorum (bazı nedenlerle, autoscale_on (True) bunu yapmıyor). Veriler oldukça değişkendir, bu yüzden sert limitleri ayarlamak bir seçenek değildir. Bunu düzgün şekilde görüntülemek için nasıl alabilirim?

cevap

10

İstediğinizi istediğinizden emin değilim, ancak aradığınız şey bu değilse değiştirebilirim.

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

Yardım eder. Bu sorunu düzeltildi autoscale_view (True, True, True)

+4

. Şimdi, teknik olarak korkunç belgelere ne yaptığıyla ilgili bir açıklama bulabilirsem. – Elliot

+0

Burada bir yerde olmalı: http://matplotlib.sourceforge.net/api/axes_api.html. Belgeleme çok iyi değil. – River

1

Eli Bendersky's Website, özellikle this post'a bakın. Gönderinin altındaki örnek indirilebilir. X ekseninin çizimi takip edip etmeyeceğini veya y ekseni verilerle değişirken statik kalacaktır.