我有三條線設置圖。我預計pic.png的大小爲640x640像素。但我得到了800x800的圖片。如何設置散點圖的大小
plt.figure(figsize=(8, 8), dpi=80)
plt.scatter(X[:],Y[:])
plt.savefig('pic.png')
順便說一句我沒有問題的設置與面向對象的界面大小,但我需要使用pyplot風格。
我有三條線設置圖。我預計pic.png的大小爲640x640像素。但我得到了800x800的圖片。如何設置散點圖的大小
plt.figure(figsize=(8, 8), dpi=80)
plt.scatter(X[:],Y[:])
plt.savefig('pic.png')
順便說一句我沒有問題的設置與面向對象的界面大小,但我需要使用pyplot風格。
下面的代碼生成一個576x576 PNG圖像在我的機器:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(10)
y = np.random.rand(10)
plt.figure(figsize=(8, 8), dpi=80)
plt.scatter(x, y)
plt.savefig('pic.png')
轉移dpi=80
到plt.savefig
調用正確導致640x640 PNG圖像:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(10)
y = np.random.rand(10)
plt.figure(figsize=(8, 8))
plt.scatter(x, y)
plt.savefig('pic.png', dpi=80)
我不能提供任何解釋爲什麼會發生這種情況。
儘管Alberto的回答爲您提供了正確的解決方法,但如果查看documentation for plt.savefig
,您可以更好地瞭解爲什麼會發生這種情況。
dpi:[無|標量> 0 | 'figure'] 每英寸點數的分辨率。如果爲None,它將默認爲matplotlibrc文件中的值savefig.dpi。如果'figure'將它設置爲數字的值。
簡短的回答:使用plt.savefig(..., dpi='figure')
使用設置在數字創作的DPI值。
較長的答案:用plt.figure(figsize=(8,8), dpi=80)
,你可以通過以下方式一個640x640圖:
傳遞dpi='figure'
關鍵字參數plt.savefig
:
plt.figure(figsize=(8, 8), dpi=80)
...
plt.savefig('pic.png', dpi='figure')
明確給出了dpi你想要savefig
:
plt.figure(figsize=(8, 8))
...
plt.savefig('pic.png', dpi=80)
編輯您的matplotlibrc file在下面一行:
#figure.dpi : 80 # figure dots per inch
然後
plt.figure(figsize=(8, 8))
...
plt.savefig('pic.png') #dpi=None implicitly defaults to rc file value
我懷疑了。我想matplotlib維護者有這個行爲的一個很好的理由---否則我會使'figure'成爲默認值。謝謝你的信息! –