我想要下面的代碼來確定子圖的大小,使得生成的PDF寬5英寸,高8英寸。但不管我放在figsize
位的文件是8英寸寬還是6英寸高。我究竟做錯了什麼?Matplotlib PDF圖不響應figsize
import matplotlib.pyplot as plt
import matplotlib.gridspec as gs
fig = plt.Figure(figsize=(5,8))
fig.set_canvas(plt.gcf().canvas)
gs1 = gs.GridSpec(3,2)
gs1.update(wspace=0.4,hspace=0.4)
ax1 = plt.subplot(gs1[0,0])
ax2 = plt.subplot(gs1[0,1])
ax3 = plt.subplot(gs1[1,0])
ax4 = plt.subplot(gs1[1,1])
ax5 = plt.subplot(gs1[2,:])
ax1.plot([1,2,3],[4,5,6], 'k-')
fig.savefig("foo.pdf", format='pdf')
哎呀--- 編輯補充一點,我自己也嘗試fig.set_size_inches((5,8))
,這似乎並沒有產生任何影響無論是。
嘗試'圖= plt.figure()' – tacaswell
只是爲了什麼@tcaswell說細說了,有plt.figure'和'plt.Figure''之間的差異。 'plt.Figure'恰好在pyplot命名空間中,但它是「raw」類。你當然可以自行初始化它(你還需要初始化一個'FigureCanvas'來讓任何東西起作用),但是這個圖不會被添加到pyplot狀態機中。 'plt.figure'是一個工廠函數,它創建一個鏈接的'Figure'和'FigureCanvas'實例並將它們添加到pyplot圖形管理器中。如果你想使用'plt。*'方法,你必須使用'plt.figure'。 –
所以發生的事情就是'fig = plt.Figure(...)'創建一個新的圖形實例,但它不會被添加到pyplot狀態機中。因此,當你調用'plt.subplot'時,沒有「當前」的數字,所以_another_ figure是在幕後創建的。 (這是直接使用圖形方法的另一個原因:例如'fig.add_subplot'而不是'plt.subplot') –