由于matplotlib生成热力后图默认的后端(backend)是交互式的,当我们不需要展示,仅仅想要保存到本地时,可以更改后端,即:
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.use("Agg") #修改依赖的后端(backend)
import seaborn as sns
改成Agg支持png格式,改成PDF支持pdf格式,或者SVG支持svg,
heatmap1 = sns.heatmap(global_pointer.cpu().data.numpy(), cmap="YlGnBu")
picture1 = heatmap1.get_figure()#得到生成的热力图
picture1.savefig("Heatmap.jpg",dpi=300,bbox_inches="tight")#保存到该项目所在文件夹下
这里热力图生成时输入不能使张量(tensor),需要转换为numpy支持的数组。
热力图heatmap()函数的其他属性,参考seaborn.heatmap()中文介绍文档。
另外:由于visio支持的矢量图片格式和latex支持的矢量图片格式不同。
我采用的方式是:输出保存为svg格式,再用visio转换为PDF格式。通常情况都可以应付,
但是再画折线图的时候,这样做会使生成的PDF格式图片中折线很糊,可以用Adobe Illustrator来转换为PDF格式。
因此,简单粗暴的方法就是保存的svg格式图片经过AI软件另存为PDF格式,这样既可以省去剪切的工作又可以保证PDF的清晰度,不会出现图中线段或者字迹的模糊。