ValueError: `multiple` 必须是 ['layer', 'stack', 'fill', 'dodge'] 之一,但是 s 被传递了`

问题描述

我试图用“hue_kws”中的“multiple”堆叠我的 histplot FaceGrid 图

fg1 = sns.FacetGrid(data=df,col="type",col_wrap=3,hue="class",height=3.5,hue_kws={"multiple": 'stack'}
                    )
fg1.map_dataframe(sns.histplot,x="col_name")

我在标题中看到错误。如果我通过

hue_kws={"multiple": 'layer'}

错误更改为

ValueError: `multiple` must be one of ['layer','stack','fill','dodge'],but l was passed.`

所以我猜只传递了值字符串的第一个字母。 我错过了什么?

解决方法

您错误地使用了 hue_kws。它的 parameter type 文档有“参数字典 -> 值映射列表”。因此,它试图将字符串的第一个字母用作第一个色调级别,将字符串的第二个字母用作第二个色调变量,等等。这不是您想要的。

虽然您可以直接使用 FacetGrid,但使用 displot 更简单、更安全:

fg1 = sns.displot(df,x="col_name",hue="class",col="type",col_wrap=3,height=3.5,multiple="stack")