gpt4 book ai didi

python - 具有来自 DataFrame 行的色调的 Seaborn 分类图

转载 作者:太空宇宙 更新时间:2023-11-04 03:12:44 25 4
gpt4 key购买 nike

我有这个 pandas DataFrame:

>>> print(df)
Channel 0 1 2 3 4 5 6 7
Sample
7d 3.82 4.10 3.86 3.86 3.95 3.65 3.43 3.63
12d 2.97 4.32 3.50 3.58 3.22 3.37 3.58 3.78
17d 4.01 4.04 4.10 3.43 3.76 3.26 3.35 3.48
DO 3.07 3.58 3.14 3.22 3.11 3.09 3.16 3.16

我想做一个类似这样的情节(代码是sns.swarmplot(df)):

enter image description here

但颜色不应按 channel (即 DataFrame 列)设置,而应按样本(即 DataFrame 行)设置。所以 x 轴上的每个“类别”将有 4 种颜色,对应于第 7d、12d、17d 和 DO 行。

有没有一种简单的方法可以在 seaborn 中实现这一点?

编辑:我应该补充一点,我尝试使用 hue 关键字,但它说它还需要使用 xy 关键字。根据this example似乎我需要创建一个新的 DataFrame,其中一列中包含所有数值,另外两列包含样本和 channel 信息。然后我可以将绘图称为 sns.swarmplot(x='Channel', y='values', hue='Sample')。有没有不涉及创建额外的临时 DataFrame 的更直接的方法?

EDIT2:按照@BrenBarn 的建议,我最终创建了一个新的“整洁”DataFrame:

dd = []
for sa in df.index:
print(sa)
d = pd.DataFrame(df.loc[sa]).reset_index()
d.columns = ['Channel', 'Leakage']
d['Sample'] = sa
dd.append(d)
ddf = pd.concat(dd)

然后绘制数据:

sns.swarmplot(x='Channel', y='Leakage', hue='Sample', data=ddf)

这给出了我预期的情节:

enter image description here

我希望有办法告诉 seaborn 使用原始的“二维表”格式来绘制这对于这种数据来说更加紧凑和自然。如果可能的话,我会接受答案;)。

最佳答案

你基本上已经在编辑中回答了你的问题,但你可能想看看pd.meltpd.stack 作为创建新的整洁 DataFrame 的更简单方法。

例如

s=df.stack()
s.name='values'
df_tidy=s.reset_index()
sns.stripplot(data=df_tidy,hue='sample',x='Channel',y='values')

df_tidy=pd.melt(df.reset_index(),id_vars=['sample'],value_vars=df.columns.tolist(),value_name='values')
sns.stripplot(data=df_tidy,hue='sample',x='Channel',y='values')

关于python - 具有来自 DataFrame 行的色调的 Seaborn 分类图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37490771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com