2016-09-26 135 views
0

我有三條線設置圖。我預計pic.png的大小爲640x640像素。但我得到了800x800的圖片。如何設置散點圖的大小

plt.figure(figsize=(8, 8), dpi=80) 
plt.scatter(X[:],Y[:]) 
plt.savefig('pic.png') 

順便說一句我沒有問題的設置與面向對象的界面大小,但我需要使用pyplot風格。

回答

0

下面的代碼生成一個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=80plt.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) 

我不能提供任何解釋爲什麼會發生這種情況。

4

儘管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圖:

  1. 傳遞dpi='figure'關鍵字參數plt.savefig

    plt.figure(figsize=(8, 8), dpi=80) 
    ... 
    plt.savefig('pic.png', dpi='figure') 
    
  2. 明確給出了dpi你想要savefig

    plt.figure(figsize=(8, 8)) 
    ... 
    plt.savefig('pic.png', dpi=80) 
    
  3. 編輯您的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 
    
+0

我懷疑了。我想matplotlib維護者有這個行爲的一個很好的理由---否則我會使'figure'成爲默認值。謝謝你的信息! –