gpt4 book ai didi

python - Seaborn Plot 包括相同数据的不同分布

转载 作者:太空狗 更新时间:2023-10-30 02:42:00 28 4
gpt4 key购买 nike

我想创建一个 seaborn pointplot 来显示列中的完整数据分布,以及最低 25% 的值的分布,以及最高 25% 的值,并且全部并排(在 x 轴上)。到目前为止,我的尝试为我提供了这些值,但它们仅显示在 x 轴的同一部分,并没有在图表上从左到右展开,并且没有明显的方法来标记 x 刻度的点(我更喜欢,而不是通过图例)。

import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib notebook

df = sns.load_dataset('tips')
df1 = df[(df.total_bill < df.total_bill.quantile(.25))]
df2 = df[(df.total_bill > df.total_bill.quantile(.75))]

sns.pointplot(y=df['total_bill'], data=df, color='red')
sns.pointplot(y=df1['total_bill'], data=df1, color='green')
sns.pointplot(y=df2['total_bill'], data=df2, color='blue')

enter image description here

最佳答案

您可以.join() 将新分布添加到您现有的df,然后使用宽格式.plot():

lower, upper = df.total_bill.quantile([.25, .75]).values.tolist()
df = df.join(df.loc[df.total_bill < lower, 'total_bill'], rsuffix='_lower')
df = df.join(df.loc[df.total_bill > upper, 'total_bill'], rsuffix='_upper')
sns.pointplot(data=df.loc[:, [c for c in df.columns if c.startswith('total')]])

得到:

enter image description here

如果你想添加组,你可以简单地使用 .unstack() 来获得 long 格式:

df = df.loc[:, ['total_bill', 'total_bill_upper', 'total_bill_lower']].unstack().reset_index().drop('level_1', axis=1).dropna()
df.columns = ['grp', 'val']

得到:

sns.pointplot(x='grp', y='val', hue='grp', data=df)

enter image description here

关于python - Seaborn Plot 包括相同数据的不同分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37861021/

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