在 Python 中以非常高的质量保存图像

我怎样才能保存非常高质量的 Python 情节?

也就是说,当我不断放大 PDF 文件中保存的对象时,为什么没有任何模糊?

另外,保存它的最佳模式是什么?

png还是 eps?还是别的什么?我不能做 pdf,因为有一个隐藏的数字,发生混乱与 Latexmk编译。

326907 次浏览

如果您正在使用 Matplotlib,并试图在 乳胶文档中获得良好的数字,则保存为 每股收益。具体来说,在运行绘制图像的命令之后,尝试这样做:

plt.savefig('destination_path.eps', format='eps')

我发现 EPS 文件工作得最好,而 dpi参数真正让它们在文档中看起来不错。

要在保存之前指定图形的方向,只需在 plt.savefig调用之前调用以下命令,但是在创建绘图之后(假设您使用名为 ax的轴进行绘图) :

ax.view_init(elev=elevation_angle, azim=azimuthal_angle)

其中,elevation_angle是一个数字(以度为单位) ,指定极角(从垂直 z 轴向下) ,而 azimuthal_angle指定方位角(围绕 z 轴)。

我发现确定这些值是最简单的方法,首先绘制图像,然后旋转它,观察角度的当前值出现在窗口底部的实际情节下面。请记住,x、 y、 z 位置是默认显示的,但是当您开始单击 + 拖动 + 旋转图像时,它们被替换为两个角度。

只是添加我的结果,也使用 Matplotlib。

.ep 使我的所有文本粗体和删除透明度. . svg 给我的高分辨率图片,实际上看起来像我的图形。

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
# Do the plot code
fig.savefig('myimage.svg', format='svg', dpi=1200)

我使用1200 dpi 是因为许多科学期刊要求图像的分辨率为1200/600/300 dpi,这取决于图像是什么。转换到所需的 dpi 并在 GIMP墨迹格式化。

显然,dpi 并不重要,因为.svg 是矢量图形,具有“无限分辨率”。

我发现 Spencer 的回答在工作。然而,如果有人发现自己不知道该如何处理这句台词,我不得不这样做:

beingsaved = plt.figure()


# Some scatter plots
plt.scatter(X_1_x, X_1_y)
plt.scatter(X_2_x, X_2_y)


beingsaved.savefig('destination_path.eps', format='eps', dpi=1000)

如果你使用的是 海运图,而不是 Matplotlib,你可以保存一个像下面这样的.png 图像:

假设你有一个 matrix对象(无论是 熊猫还是 笨蛋) ,你想要一个热图:

import seaborn as sb


image = sb.heatmap(matrix)   # This gets you the heatmap
image.figure.savefig("C:/Your/Path/ ... /your_image.png")   # This saves it

这段代码与 Seaborn 的最新版本兼容,其他围绕 Stack Overflow 的代码只适用于以前的版本。

我喜欢的另一种方式是这样的,我将下一张图片的大小设置如下:

plt.subplots(figsize=(15,15))

然后,我在控制台中绘制输出,从中可以复制粘贴到我想要的位置。(由于 Seaborn 是建立在 Matplotlib 之上的,因此不会有任何问题。)

你可以使用以下方法保存到1920x1080(或1080p) :

fig = plt.figure(figsize=(19.20,10.80))

你也可以走得更高或更低。上面的解决方案可以很好地进行打印,但是现在您希望创建的图像进入 PNG/JPG 或以宽屏格式显示。