我有三行代码来设置图表,希望图片pic.png的尺寸为640x640像素。但是实际得到的图片尺寸为800x800像素。
plt.figure(figsize=(8, 8), dpi=80)
plt.scatter(X[:],Y[:])
plt.savefig('pic.png')
顺便说一句,我使用面向对象的接口设置大小没有问题,但我需要使用pyplot风格。
我有三行代码来设置图表,希望图片pic.png的尺寸为640x640像素。但是实际得到的图片尺寸为800x800像素。
plt.figure(figsize=(8, 8), dpi=80)
plt.scatter(X[:],Y[:])
plt.savefig('pic.png')
顺便说一句,我使用面向对象的接口设置大小没有问题,但我需要使用pyplot风格。
以下代码在我的机器上生成一个 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)
我无法解释为什么会发生这种情况。
plt.savefig
文档可以更好地了解为什么会出现这种行为。
dpi:[无|标量>0|“figure”]每英寸点数的分辨率。如果为None,则默认为matplotlibrc文件中savefig.dpi的值。如果是“figure”,则将dpi设置为图形的值。
简短回答:使用plt.savefig(...,dpi ='figure')
使用在创建图形时设置的dpi值。
较长回答:使用plt.figure(figsize =(8,8),dpi = 80)
,您可以以以下方式获得640x640的图形:
Pass the dpi='figure'
keyword argument to plt.savefig
:
plt.figure(figsize=(8, 8), dpi=80)
...
plt.savefig('pic.png', dpi='figure')
Explicitly give the dpi you want to savefig
:
plt.figure(figsize=(8, 8))
...
plt.savefig('pic.png', dpi=80)
Edit your matplotlibrc file at the following line:
#figure.dpi : 80 # figure dots per inch
then
plt.figure(figsize=(8, 8))
...
plt.savefig('pic.png') #dpi=None implicitly defaults to rc file value