2016-09-26 800 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'成为默认值。谢谢你的信息! –