如何使用seaborn生成高分辨率热力图?

9

我有太多的特征(约100个)需要进行相关性分析,导致图像分辨率低。我该如何提高分辨率?

sns.heatmap(Feature_corr, cbar = True,  square = True, annot=False,annot_kws={'size': 15},  cmap= 'coolwarm')

我不确定这里的问题是什么。你拥有多少特征并不是真正重要的。热力图方块由许多像素组成,这里没有什么实际问题可见。描述一下你觉得烦恼的地方!看起来你的数据有点有趣/非均匀,这解释了较大的区块,当然标题也因为太多而断开。除此之外,对我来说一切看起来都还好。也许你正在询问关于matplotlib在图片压缩方面的输出???热力图不一定是插值的(希望你知道这一点;只是为了确保)。 - sascha
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
12
在调用`heatmap`之前,从`matplotlib.pyplot`中调用`figure`并使用`figsize`设置图像大小,例如:
import seaborn as sns
from matplotlib import pyplot

pyplot.figure(figsize=(15, 15)) # width and height in inches
sns.heatmap(Feature_corr, cbar=1, square=1, annot=0, annot_kws={'size': 15}, cmap= 'coolwarm')

6

使用Matplotlib中的图形参数可以修改轴标签的宽度、高度、字体大小和dpi。调整这些值可以帮助提高图像分辨率。

此外,您可以通过调整的参数annot_kws={"size": 8}来修改值的字体大小。

DPI表示每英寸图像中的像素数。 DPI值越高,图像分辨率越好。

之前

corr = df2.corr() #your dataframe
sns.heatmap(corr, cmap="Blues", annot=True)

未经过Matplotlib调整的结果图像

未经过Matplotlib调整的结果图像

使用Matplotlib

import matplotlib.pyplot as plt
import seaborn as sns

corr = df2.corr() #your dataframe

# figsize=(6, 6) control width and height
# dpi = 600, I 
plt.figure(figsize=(6, 6), 
           dpi = 600) 
 
# parameter annot_kws={"size": 8} control corr values font size
sns.heatmap(corr, cmap="Blues", annot=True, annot_kws={"size": 8})

plt.tick_params(axis = 'x', labelsize = 12) # x font label size
plt.tick_params(axis = 'y', labelsize = 12) # y font label size

结果:

Matplotlib示例图像结果:


请注意,这里的顺序非常重要 - 在 sns.heatmap 之前必须插入 plt.figure(figsize=(6, 6), dpi = 600),以便使其正常工作。 - Manaslu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,