Answers:
如果您正在使用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位置,但是当您开始单击+拖动+旋转图像时,它们会被两个角度替换。
format='eps'
如果愿意,可以省略。在这种情况下,格式是从文件名推断出来的。
只是添加我的结果,也使用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,结果甚至比我们在屏幕上看到的还要差,绝对不适合出版物。
如果您正在使用海图,而不是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之上的,因此不会有问题。)
您可以使用以下方法将其保存为1920x1080(或1080p)的图形:
fig = plt.figure(figsize=(19.20,10.80))
您也可以更高或更低。上述解决方案可以很好地用于打印,但是如今,您希望将创建的图像转换为PNG / JPG或以宽屏格式显示。