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

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

我正在尝试将我的 histplot FaceGrid 图与“hue_kws”中的“多个”堆叠在一起

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")