1
我已經編寫了一些代碼來在matplotlib中生成多面板圖形。爲了使圖形在文檔中看起來更清晰,我嘗試增加dpi。我發現,雖然,這也改變了圖中,字體,線條等的尺寸,如圖所示在下面的簡單的例子:調整matplotlib中的圖形質量
#First normal figure
fig, axarr = plt.subplots(2,2, figsize=(6,6))
for i,ax in enumerate(axarr.flatten()):
ax.plot(range(10))
ax.set_title('title'+str(i), fontsize=10)
ax.set_xlabel('x'+str(i), fontsize=10)
ax.set_ylabel('y'+str(i), fontsize=10)
plt.tight_layout()
#Again, with higher dpi
fig, axarr = plt.subplots(2,2, figsize=(6,6), dpi=200)
for i,ax in enumerate(axarr.flatten()):
ax.plot(range(10))
ax.set_title('title'+str(i), fontsize=10)
ax.set_xlabel('x'+str(i), fontsize=10)
ax.set_ylabel('y'+str(i), fontsize=10)
plt.tight_layout()
plt.show()
在我的計算機(使用matplotlib 1.4.3),第二個數字尺寸較大且文字較大,因此y軸標籤重疊。如果不使用plt.tight_layout(),子圖軸的重疊也會變得更糟。顯然,這只是爲了創造更高質量的數字而沒有幫助。這裏發生了什麼,如何改變圖形質量並保持圖形的外觀不變?有沒有一種解決方案在我調整了子圖參數,添加了顏色條和圖例等,也就是一般情況下也能起作用?預先感謝您提供的任何幫助。
謝謝你。我想說的是,如果可能的話,我寧願不用savefig來完成它,因爲我使用具有不同參數調用的相同腳本來產生大量數字,並且需要爲腳本外部的每個腳本調用savefig(因爲我使用的文件名不容易「可編程」),並且我發現如果我這樣做,我會很容易發生錯誤,例如將錯誤的數字保存到文件中。如果將來我必須做類似的事情,我可能會忘記設置dpi。沒有使用savefig沒有辦法做到這一點? – PeterW
我也很想知道爲什麼在任何人都知道的情況下,更改dpi會改變GUI窗口中的繪圖外觀。 – PeterW
如果您的名字不易編程,請列出一個列表並傳遞相應的參數作爲保存圖像的文件名。關於第二條評論,我編輯了我的評論,以解釋爲什麼更改dpi的外觀可能是相同的。 dpi表示「每英寸點數」,而fontsize表示數字/字母的點大小。所以取決於你如何選擇它們,結果可能是一樣的。 – iblasi