如何设置散点图的大小

时间:2016-09-26 21:32:46

标签: python matplotlib

我有三行设置情节。我希望pic.png的大小为640x640像素。但我得到了800x800的照片。

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

BTW我使用面向对象的界面设置大小没有问题,但我需要使用pyplot样式。

2 个答案:

答案 0 :(得分:5)

以下代码在我的机器中生成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)

我无法解释为什么会发生这种情况。

答案 1 :(得分:5)

虽然Alberto的答案为您提供了正确的解决方法,但查看documentation for plt.savefig可让您更好地了解此行为发生的原因。

  

dpi:[无|标量> 0 | '数字']   分辨率以每英寸点数表示。如果为None,则默认为matplotlibrc文件中的值savefig.dpi。如果是“数字”,它会将dpi设置为数字的值。

简答:使用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