2013-03-08 59 views
0

我使用以下示例Example創建兩個極座標輪廓子圖。當我創建PDF格式時,我想通過更改無花果大小來刪除大量的空白區域。更改matplotlib極座標輪廓中的figsize

我知道如何改變figsize通常,但我很難看到它在這個代碼示例中的位置。任何指導或提示將不勝感激。

非常感謝!

import numpy as np 
import matplotlib.pyplot as plt 

#-- Generate Data ----------------------------------------- 
# Using linspace so that the endpoint of 360 is included... 
azimuths = np.radians(np.linspace(0, 360, 20)) 
zeniths = np.arange(0, 70, 10) 

r, theta = np.meshgrid(zeniths, azimuths) 
values = np.random.random((azimuths.size, zeniths.size)) 

#-- Plot... ------------------------------------------------ 
fig, ax = plt.subplots(subplot_kw=dict(projection='polar')) 
ax.contourf(theta, r, values) 

plt.show() 

回答

1

另一種方法是在撥打plt.subplots時使用figsize kwarg。

fig, ax = plt.subplots(figsize=(6,6), subplot_kw=dict(projection='polar'))

順便提一下,這些數值以英寸爲單位。

+0

非常感謝你,這正是我想要的! – James 2013-03-10 10:12:00

1

你可以很容易地只在代碼的開頭放plt.figsize(x,y),它會工作。 plt.figsize改變所有未來地塊的大小,而不僅僅是當前的地塊。

但是,我認爲你的問題不是你認爲的問題。除非您改變選項,否則生成的PDF中會有相當多的空白。我通常使用

plt.savefig('name.pdf', bbox_inches='tight', pad_inches=0) 

這給儘可能少的空白。 bbox_inches ='tight'會盡量減小邊界框的大小,而pad_inches則會設定應該填充的空白的數量。在我的情況下,我沒有額外的填充,因爲我使用這個數字添加了填充。

+0

謝謝,我沒有意識到savefig中的意見 - 這有助於。 實際上,使用plt.figsize =(5,5),例如,在代碼的開頭對我的輸出沒有影響。 – James 2013-03-10 10:10:42

+0

如果你正在做plt.figsize =(5,5),那不起作用;它需要是plt.figsize(5,5)沒有等於。有一個函數figsize,它設置默認的圖形大小,以及一個命名參數figsize來繪製圖形和子圖,它爲這個特定圖形設置圖形。 – cge 2013-03-11 00:53:18