如何移除Seaborn displot的分面标签
移除Seaborn displot的分面标签(species = ...)
我来帮你搞定这个问题!要去掉displot生成的分面里那些species = ...的标题,其实有两种简单的方式,都是围绕Seaborn的FacetGrid对象来操作的——毕竟displot本质上返回的是FacetGrid实例,分面标题的控制逻辑都在这个对象里。
方法1:生成图表后修改标题模板
先把displot的返回值存为变量,再调用set_titles方法自定义标题格式,把对应列(species分面)的标题设为空字符串即可:
import seaborn as sns sns.set_theme(style="darkgrid") df = sns.load_dataset("penguins") # 保存FacetGrid对象 g = sns.displot( df, x="flipper_length_mm", col="species", row="sex", binwidth=3, height=3, facet_kws=dict(margin_titles=True), ) # 移除列的分面标题(species=...),行标题可保留或也设为空 g.set_titles(col_template="", row_template="{row_name}")
如果连行的sex标题也想去掉,直接把row_template也改成空字符串就行:
g.set_titles(col_template="", row_template="")
方法2:创建displot时直接配置facet_kws
你已经在用facet_kws参数了,其实可以直接在里面加入标题模板配置,一步到位:
import seaborn as sns sns.set_theme(style="darkgrid") df = sns.load_dataset("penguins") sns.displot( df, x="flipper_length_mm", col="species", row="sex", binwidth=3, height=3, facet_kws=dict( margin_titles=True, col_template="", # 移除列的分面标题 row_template="{row_name}" # 保留行标题,按需修改 ), )
补充说明
你之前觉得分面标签是绘图对象的属性,思路其实没太偏——只是这些标题是通过FacetGrid的方法(或初始化参数)来控制的,不是直接的可赋值属性,所以需要用set_titles或者facet_kws里的模板参数来调整。修改后分面标题就不会占用多余空间,方便你把这个图整合到最终的多图表布局里啦!
内容的提问来源于stack exchange,提问作者dcurrie27
相关产品推荐
相关产品推荐

