如何为sns.pairplot的kde hue分组设置不同线条样式
解决方案
- 直接通过
diag_kws传递线型列表无法生效,是因为该参数会将统一的参数值传递给所有分组的KDE绘图逻辑,不支持自动按hue分组映射不同样式 - 可以在
pairplot绘制完成后,遍历对角线的子图对象,手动为不同hue分组的KDE线设置对应线型
完整可运行代码如下:
import seaborn as sns import matplotlib.pyplot as plt iris = sns.load_dataset("iris") # 按hue分组的顺序定义对应线型,顺序可通过g.hue_names确认 linestyles = ['solid', 'dotted', 'dashed'] # 正常绘制pairplot,diag_kws只传通用参数 g = sns.pairplot(iris, kind="scatter", hue = 'species', diag_kind='auto', diag_kws={'bw_adjust':.03} ) # 遍历所有对角线子图修改线型 for ax in g.diag_axes: for line, ls in zip(ax.lines, linestyles): line.set_linestyle(ls) plt.show()
如果需要调整对应分组的线型,只需要修改linestyles列表的元素即可,保证列表顺序和g.hue_names输出的hue类别顺序一致即可。
内容的提问来源于stack exchange,提问作者Xin Niu
相关产品推荐
相关产品推荐

