簡體   English   中英

如何在 `seaborn.FacetGrid` 的 `seaborn.violinplot` 中使用 `split` 參數

[英]How to use the `split` argument in a `seaborn.violinplot` in a `seaborn.FacetGrid`

任務是制作一個FacetGrid ,其中包含帶有拆分小提琴的violinplot

設置包含沒有拆分的小提琴圖的 FacetGrid:

import numpy as np
import pandas as pd
import seaborn as sns
np.random.seed(42)
df = pd.DataFrame(
    {
        "value": np.random.rand(20),
        "condition": ["true", "false"]*10,
        "category": ["right"]*10 + ["wrong"]*10,
    }
)
g = sns.FacetGrid(data=df, col="category", hue="condition", col_wrap=5)
g.map(sns.violinplot, "value");

帶有小提琴圖的 FacetGrid。

以下是小提琴 plot 將部分數據顯示為帶有“拆分”的小提琴圖:

p = sns.violinplot(
    data=df[df["category"]=="right"],
    x="value",
    y="category",
    hue="condition",
    split=True
)

在此處輸入圖像描述

map中添加 split 參數不會產生所需的分割圖。 就好像 split 被忽略了:

g = sns.FacetGrid(data=df, col="category", hue="condition", col_wrap=5)
g.map(sns.violinplot, "value", split=True);

在此處輸入圖像描述

sns.__version__ # '0.12.1'

對於這些catplot ,似乎 seaborn 不允許y為空。 您可以通過創建虛擬 y 值來解決此問題:

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

np.random.seed(42)
df = pd.DataFrame({"value": np.random.rand(20),
                   "condition": ["true", "false"] * 10,
                   "category": ["right"] * 10 + ["wrong"] * 10})
df["y"] = "" # create a dummy column to be used as "y="
sns.catplot(data=df, x="value", y="y", col="condition", hue="category", kind="violin", split=True)
plt.show()

帶有虛擬 y 的 sns.catplot

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM