使用seaborn facetgrid heatmap更改构面标题的字体大小

Chr*_*rth 2 python matplotlib seaborn

注意:这是与“ 如何使用seaborn FacetGrid更改字体大小? ” 不同的问题。在构面网格内使用热图时,此处建议的方法不起作用。

在构面网格内绘制热图时,如何更改构面标题的字体大小?

尝试下面的代码两种方法,传递fontsize=set_titles()并在绘图背景下包裹了整个事情。据我所知,尽管字体重量确实发生了变化,但在使用热图时,似乎都没有影响面标题。使用热图时,是否还有其他选项可以控制构面标题?

import pandas as pd
import numpy as np
import itertools
import seaborn as sns

print("seaborn version {}".format(sns.__version__))
# R expand.grid() function in Python
# /sf/answers/849196981/
def expandgrid(*itrs):
   product = list(itertools.product(*itrs))
   return {'Var{}'.format(i+1):[x[i] for x in product] for i in range(len(itrs))}

methods=['method 1', 'method2', 'method 3', 'method 4']
times = range(0,100,10)
data = pd.DataFrame(expandgrid(methods, times, times))
data.columns = ['method', 'dtsi','rtsi']
data['nw_score'] = np.random.sample(data.shape[0])

def facet(data,color):
    data = data.pivot(index="dtsi", columns='rtsi', values='nw_score')
    g = sns.heatmap(data, cmap='Blues', cbar=False)

with sns.plotting_context(font_scale=5.5):
    g = sns.FacetGrid(data, col="method", col_wrap=2, size=3, aspect=1)
    g = g.map_dataframe(facet)
    g.set_titles(col_template="{col_name}", fontweight='bold', fontsize=18)
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Chr*_*rth 6

感谢@mwaskon,这是size=调用时的答案set_titles

这导致了更多的问题,例如

  • 能否请您更改set_titles使用的fontweight=fontsize=而不是 fontweight=size=size=用于其他方面的刻面高度(以英寸为单位)。
  • 为什么sns.plotting_context在这种情况下完全无效?

  • set_titles只是将其他关键字参数传递给matplotlib方法ax.set_title,并且需要使用size,因此seaborn对此无能为力。至于plotting_context,由于它的工作方式,如果context是None,将忽略font_scale,因此您需要plotting_context(“ notebook”,font_scale = 5.5)或类似的东西。 (2认同)