更改 seaborn 热力图的 x 轴刻度标签字体大小

43

这里是我的问题:
我使用sns.clustermap()绘制了7个变量的系数。

  • x/y轴的标签看起来非常小(在我的例子中,为s1、s2、...s9)。

我的尝试

  • label='big' ==> 没有效果
  • plt.tick_params(axis='both', which='minor', labelsize=12) ==> 色条标签已更改,但x/y轴看起来仍然一样。

代码:

 ds =  pd.read_csv("xxxx.csv")
 corr = ds.corr().mul(100).astype(int)
 
 cmap = sns.diverging_palette(h_neg=210, h_pos=350, s=90, l=30, as_cmap=True)

 sns.clustermap(data=corr_s, annot=True, fmt='d',cmap = "Blues",annot_kws={"size": 16},)
2个回答

85
考虑在绘制数据之前调用sns.set(font_scale=1.4)。这将缩放图例和轴上的所有字体。
我的图形从这个变成了, enter image description here 到这个,

enter image description here

当然,将缩放调整为您认为合适的设置。
代码:
sns.set(font_scale=1.4)
cmap = sns.diverging_palette(h_neg=210, h_pos=350, s=90, l=30, as_cmap=True)
sns.clustermap(data=corr, annot=True, fmt='d', cmap="Blues", annot_kws={"size": 16})

标签可以有不同的颜色吗? - Siddhant
1
谢谢!这可能很明显,但您也可以使用sns.set(font_scale=0.5)来使字体变小,具体来说是使用小于一的值。 - mikey
不,这并不能提供正确的答案,因为这将重新调整所有文本,包括标题。如果我只想重新调整xticklabels,我该怎么办? - Mayou36

34

或者直接使用 set_xticklabels:

g = sns.clustermap(data=corr_s, annot=True, fmt='d',cmap = "Blues")
g.ax_heatmap.set_xticklabels(g.ax_heatmap.get_xmajorticklabels(), fontsize = 16)
为了为刻度标签获得不同的颜色:
import matplotlib.cm as cm
colors = cm.rainbow(np.linspace(0, 1, corr_s.shape[0]))
for i, ticklabel in enumerate(g.ax_heatmap.xaxis.get_majorticklabels()):
    ticklabel.set_color(colors[i])

标签可以有不同的颜色吗? - Siddhant
我会说是一个更加灵活的解决方案。 - Archie

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