2010-07-09 146 views
8

我需要使用matplotlib自動獲取適合數據的圖。這是我得到的代碼: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-〜0.8)不管數據是什麼,即使所有的數據都是之外的窗口。由此產生的窗口無法縮小,只能在縮小,所以這是一個主要問題。我找不到任何設置尺寸的地方,II也不能找到有關默認設置的詳細信息。我需要窗口自動適合數據,但我找不到任何功能(因爲某些原因,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 2010-07-09 19:41:00

+0

應該在這裏的某個地方:http://matplotlib.sourceforge.net/api/axes_api.html。雖然文檔不太好。 – River 2010-07-12 16:05:28