我有三条线设置图。我预计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)
我不能提供任何解释为什么会发生这种情况。
尽管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图:
传递dpi='figure'
关键字参数plt.savefig
:
plt.figure(figsize=(8, 8), dpi=80)
...
plt.savefig('pic.png', dpi='figure')
明确给出了dpi你想要savefig
:
plt.figure(figsize=(8, 8))
...
plt.savefig('pic.png', dpi=80)
编辑您的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
我怀疑了。我想matplotlib维护者有这个行为的一个很好的理由---否则我会使'figure'成为默认值。谢谢你的信息! –