2016-09-26 14 views
0

プロットを設定する3行があります。 pic.pngのサイズは640x640ピクセルになると思います。しかし、私は800x800の画像を持っています。散布図のサイズを設定する方法

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

私はオブジェクト指向のインターフェイスでサイズを設定するのに問題はありませんが、私はパイロットスタイルを使用する必要があります。

答えて

0

次のコードは、私のマシンで576x576 PNG画像を生成:

plt.savefig呼び出しが正しく640x640 PNG画像では結果に dpi=80をシフト
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') 

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

アルベルトの回答が正しい回避策を示していますが、documentation for plt.savefigを見ると、なぜこの現象が起こるのかがわかります。

dpi:[なし|スカラー> 0 | 'figure'] 解像度は1インチあたりのドット数です。 Noneの場合、デフォルトでは、matplotlibrcファイルの値savefig.dpiになります。 'figure'の場合は、dpiをFigureの値に設定します。

短い答え:図の作成時に設定したdpi値を使用する使用plt.savefig(..., dpi='figure')

長い答え:plt.figure(figsize=(8,8), dpi=80)、次の方法で640x640の図を得ることができます。

  1. plt.savefigdpi='figure'キーワード引数を渡す:

    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'''をデフォルトにします。しかし、情報をありがとう! –