2013-08-21 39 views
2

我發現了一個奇怪的行爲pyplot圖。當數據點的數量超過一定數量時,線條不會畫到底 - 在最右邊的空白處我無法擺脫。我想知道我該如何強迫pyplot一路畫出來。如何關閉一個matplotlib圖的邊界

我使用Python 2.7.5和matplotlib 1.2.1。

from pylab import * 
from random import random 
bins = arange(0, 180, 5) 
data = array([random() for i in xrange(len(bins))]) 
plot(bins[:10], data[:10], drawstyle="steps-mid") #draws till the end 
title("some data") 
figure() 
plot(bins, data, drawstyle="steps-mid") #white space at the right 
title("all data") 
show() 

這也發生在其他活動的drawstyle選項中。我可以使用一個xlim來縮小繪圖後的x軸,以便將切除的部分也從軸上切除,但是我寧願不要這樣做,因爲我希望將軸保持原樣。我考慮過在bins和0到data之間加入一個額外的元素,然後使用xlim,但這是一個非常古怪的修復方法。

可以看到all datasome data的情節。

+0

matplotlib使用的默認定位器查看您的數據範圍,並嘗試選擇限制,使您具有「好」的滴答間距。它會根據需要填寫限制。 – tacaswell

回答

1

使用您的Axes'set_xlim()方法可以避免您看到的自動調整行爲。

data = array([random() for i in xrange(len(bins))]) 
plot(bins[:10], data[:10], drawstyle="steps-mid") #draws till the end 
title("some data") 

fig = figure() 
ax = fig.add_subplot(111) 
plot(bins, data) 
ax.set_xlim(min(bins), max(bins) 
ax.set_title("all data") 
show() 
+0

謝謝!我仍然需要學習如何使用座標軸。但是你的回答本身導致了一個'AttributeError:'列表'對象沒有屬性'set_xlim'。相反,我不得不使用'fig = figure(); ax = fig.add_subplot(111);情節(箱,數據); ax.set_xlim(min(bins),max(bins)); ax.set_ttile(「所有數據」);顯示()'。但這確實按預期工作。非常感謝你! – Zollern

+0

是的,確實如此。糾正。如果您滿意,請隨時點贊和/或接受答案 –