繁体   English   中英

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

[英]Saving images in Python at a very high quality

如何以非常高的质量保存 Python 图?

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

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

png , eps ? 还是别的? 我不能做pdf ,因为有一个隐藏的数字会与Latexmk编译Latexmk

如果您正在使用Matplotlib并试图在LaTeX文档中获得好的数字,请另存为EPS 具体来说,在运行命令绘制图像后尝试这样的事情:

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

我发现 EPS 文件效果最好,而dpi参数才是真正让它们在文档中看起来不错的原因。

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

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

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

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

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

.eps 使我所有的文本都加粗并删除了透明度。 .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 的图像,具体取决于图像的内容。 GIMPInkscape 中转换为所需的 dpi 和格式。

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

好的,我发现spencerlyon2 的答案有效。 但是,如果有人发现自己不知道如何处理那一行,我必须这样做:

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)

如果您使用的是seaborn图,而不是 Matplotlib,您可以像这样保存 .png 图像:

假设您有一个matrix对象( PandasNumPy ),并且您想要获取热图:

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 或以宽屏幕格式显示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM