如何以非常高的质量保存Python绘图?
也就是说,当我在PDF文件中保存的对象上不断缩放时,为什么没有模糊?
此外,最佳模式是什么?
png
,eps
?还是其他的?我不能使用pdf
,因为会有一个隐藏的数字影响Latexmk
编译。
如何以非常高的质量保存Python绘图?
也就是说,当我在PDF文件中保存的对象上不断缩放时,为什么没有模糊?
此外,最佳模式是什么?
png
,eps
?还是其他的?我不能使用pdf
,因为会有一个隐藏的数字影响Latexmk
编译。
如果您正在使用Matplotlib并尝试在LaTeX文档中获得良好的图像,请将其保存为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位置,但是当您开始点击+拖动+旋转图像时,它们会被两个角度替换。
补充我的结果,我也使用了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 是矢量图形,具有“无限分辨率”。
imshow(..)
时,DPI非常重要。这些位图在嵌入到SVG中时会被光栅化。使用默认DPI的结果甚至比屏幕上看到的更糟糕,绝对不适合出版。 - Evgeni Sergeev好的,我找到了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)
您可以使用以下方法保存分辨率为1920x1080(或1080p)的图像:
fig = plt.figure(figsize=(19.20,10.80))
您还可以选择更高或更低的分辨率。上述解决方案适用于打印,但现在您可能希望创建的图像以PNG / JPG格式存储或以宽屏格式显示。
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
plt.subplots(figsize=(15,15))
然后我稍后在控制台中绘制输出,从中可以复制粘贴到需要的地方。(由于Seaborn是建立在Matplotlib之上的,因此不会有任何问题。)
format='eps'
。这种情况下,文件格式将从文件名中推断出来。 - timgebdpi
非常重要。简而言之,较低的dpi
导出将包含像素化的嵌入式图像等光栅元素。 - PPR