问题:以非常高的质量将图像保存在python中
如何以极高的质量保存python图?
也就是说,当我继续放大保存在pdf文件中的对象时,没有模糊吗?
另外,保存它的最佳方式是什么?
png
,eps
?还是其他?我不能做,pdf
因为有一个隐藏的数字发生,导致Latexmk
编译混乱。
回答 0
如果您正在使用matplotlib
并试图在乳胶文档中获得良好的数据,请另存为eps。具体来说,请在运行命令以绘制图像后尝试以下操作:
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位置,但是当您开始单击+拖动+旋转图像时,它们会被两个角度替换。
回答 1
只是添加我的结果,也使用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。在GiMP或Inkscape中转换为所需的dpi和格式。
编辑:显然dpi没关系,因为.svg是矢量图形,并且具有“无限分辨率”。
回答 2
好的,我发现spencerlyon2的答案有效,但是万一有人发现自己不知道该如何处理那一行,我就必须这样做:
beingsaved = plt.figure()
# some scatters
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)
回答 3
如果您正在使用海图,而不是matplotlib,可以保存一个.png图像,如下所示:
假设您有一个matrix
对象(pandas或numpy),并且想获取一个热图:
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的最新版本兼容。关于stackoverflow的其他代码仅适用于以前的版本。
我喜欢的另一种方式是这样。我将下一张图像的大小设置如下:
plt.subplots(figsize=(15,15))
然后,稍后在控制台中绘制输出,从中可以将其复制粘贴到所需的位置。(由于seaborn是建立在matplotlib之上的,因此不会有问题。)
回答 4
您可以使用以下方法将其保存为1920×1080(或1080p)的图形:
fig = plt.figure(figsize=(19.20,10.80))
您也可以更高或更低。上述解决方案可以很好地用于打印,但是如今,您希望将创建的图像转换为PNG / JPG或以宽屏格式显示。