在单个图中获取单独的均值线

Getting separate means line in a single plot

我正在研究这个数字,想知道是否有可能得到一条平均线(如图中的黑线),但对于每个集中组。

抱歉,我无法与您共享数据。 想法?

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

p=sns.swarmplot(x="Class", y="DS", data=dfx, size=9, palette="summer_r", hue="Conc")
sns.boxplot(showmeans=True,
            meanline=True,
            meanprops={'color': 'k', 'ls': '-', 'lw': 2},
            medianprops={'visible': False},
            whiskerprops={'visible': False},
            zorder=10,
            x="Class",
            y="DS",
            data=dfx,
            showfliers=False,
            showbox=False,
            showcaps=False,
            ax=p)
plt.show()

目前情况:

我想要的样子(红色箭头只是为了引起你的注意):

您可以遍历不同的 conc 值,并为每个值调用虚拟箱线图。

这是一个使用标准提示数据集的示例:

import seaborn as sns

tips = sns.load_dataset('tips')
ax = sns.swarmplot(x="day", y="tip", data=tips, size=3, palette="summer_r", hue="sex")
categories = tips["sex"].unique()
colors = sns.color_palette('summer_r', len(categories))
for cat, color in zip(categories, colors):
    sns.boxplot(showmeans=True,
                meanline=True,
                meanprops={'color': color, 'ls': '-', 'lw': 2},
                medianprops={'visible': False},
                whiskerprops={'visible': False},
                zorder=3,
                x="day",
                y="tip",
                data=tips[tips["sex"] == cat],
                showfliers=False,
                showbox=False,
                showcaps=False,
                ax=ax)