【问题标题】:How to highlight certain boxplots?如何突出显示某些箱线图?
【发布时间】:2021-03-10 14:43:51
【问题描述】:

我在每个州都有某些箱线图,它们在两个品牌之间具有统计学意义。

a4_dims = (40, 10)
fig, ax = pyplot.subplots(figsize=a4_dims)
dd=pd.melt(df_box,id_vars=['region'],value_vars=['Lowe\'s','Home Depot'],var_name='brands')
a = df_box.groupby(['region']).sum()
most_visits_order = a.assign(tmp=a.sum(axis=1)).sort_values('tmp', ascending=False).drop('tmp', 1).index.tolist()
sns.boxplot(x='region',y='value',data=dd,hue='brands',showfliers=False,order=most_visits_order)

如何突出显示或提醒我发现统计差异的州? (比如说是 TX,GA)

我尝试将其转换为 forloop 方法,以便为每个 x 手动添加它们,但效果不太好:

fig, ax = plt.subplots()
n=len(stat_sig)
fig,ax = plt.subplots(n,1, figsize=(6,n*2), sharex=True,squeeze=False)
for i in range(n):
    plt.sca(ax[i])
    dd=pd.melt(df_box[df_box['region']==stat_sig[i]],id_vars=['region'],value_vars=['Lowe\'s','Home Depot'],var_name='brands')
    ax = sns.boxplot(x='region',y='value',data=dd,hue='brands',width=0.2)
ax.legend_.remove()
plt.show()

错误:TypeError:不可散列的类型:'numpy.ndarray'

【问题讨论】:

标签: python matplotlib seaborn boxplot


【解决方案1】:

如果您从熔化的数据框开始,很可能会更容易,例如:

from scipy import stats
import seaborn as sns
import matplotlib.pyplot as plt

np.random.seed(27)
dd = pd.DataFrame({'region':np.random.choice(['A','B','C','D','E'],50),
                  'value':np.random.uniform(0,1,50),
                  'brands':np.random.choice(['1','2'],50)})

o = dd.groupby(['region']).sum()['value'].sort_values().index

获取一个函数来执行 t.test 或其他返回 p 值的函数:

def dotest(df):
    x,y = df.groupby('brands')['value'].apply(list)
    return stats.ttest_ind(x,y)[1]

pvalues = dd.groupby('region').apply(dotest)[o]

在图中,第一个区域的框坐标为 0.5-1.5,第二个区域为 1.5-2.5,依此类推。所以你只需要弄清楚你的哪些地区很重要并突出显示它们:

fig,ax = plt.subplots(1,1)
sns.boxplot(x='region',y='value',data=dd,hue='brands',showfliers=False,order=o,ax=ax)
for i in np.where(pvalues<0.05)[0]:
    ax.axvspan(i-0.4,i+0.4, color='red', alpha=0.1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2016-01-19
    • 2015-01-12
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    相关资源
    最近更新 更多