如何设置散点图的大小

Ant*_*onK 1 python matplotlib

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

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

顺便说一句我用面向对象的界面设置大小没有问题,但我需要使用pyplot样式.

Alb*_*oso 8

以下代码在我的机器中生成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')
Run Code Online (Sandbox Code Playgroud)

转移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)
Run Code Online (Sandbox Code Playgroud)

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


wfl*_*nny 5

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

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

简答:用于plt.savefig(..., dpi='figure')使用创建图形时设置的dpi值.

更长的答案:使用a 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')
    
    Run Code Online (Sandbox Code Playgroud)
  2. 明确给出你想要的dpi savefig:

    plt.figure(figsize=(8, 8))
    ...
    plt.savefig('pic.png', dpi=80)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在以下行编辑matplotlibrc文件:

    #figure.dpi       : 80      # figure dots per inch
    
    Run Code Online (Sandbox Code Playgroud)

    然后

    plt.figure(figsize=(8, 8))
    ...
    plt.savefig('pic.png') #dpi=None implicitly defaults to rc file value
    
    Run Code Online (Sandbox Code Playgroud)