python 在直方图上用误差条覆盖箱线图或均值

1bqhqjot  于 2023-05-05  发布在  Python
关注(0)|答案(1)|浏览(128)

我正在以一种非常标准的方式在Seaborn中创建我的数据的直方图,即:

rc = {'font.size': 32, 'axes.labelsize': 28.5, 'legend.fontsize': 32.0, 
    'axes.titlesize': 32, 'xtick.labelsize': 31, 'ytick.labelsize': 12}
sns.set(style="ticks", color_codes=True, rc = rc)
plt.figure(figsize=(25,20),dpi=300)

ax = sns.distplot(synData['SYNERGY_SCORE'])
print (np.mean(synData['SYNERGY_SCORE']), np.std(synData['SYNERGY_SCORE']))
# ax = sns.boxplot(synData['SYNERGY_SCORE'], orient = 'h') 

ax.set(xlabel = 'Synergy Score', ylabel = 'Frequency', title = 'Aggregate Synergy Score Distribution')

这将生成以下输出:

我还想在同一个图上可视化这个数据集的平均值+标准差,理想情况下,在x轴上(或x轴的正上方)有一个平均值点,并有缺口的误差条显示标准差。另一个选项是拥抱x轴的箱线图。我试着只添加注解掉的那一行(sns.boxplot()),但它看起来非常难看,根本不是我想要的。有什么建议吗?

zbdgwd5y

zbdgwd5y1#

箱线图绘制在分类轴上,不会与直方图的密度轴很好地共存,但可以使用双x轴图来实现:

import numpy as np
import seaborn as sns
np.random.seed(2023)  # ensures reproducible data

x = np.random.randn(300)
ax = sns.distplot(x)
ax2 = ax.twinx()
sns.boxplot(x=x, ax=ax2)
ax2.set(ylim=(-.5, 10))

sns.distplot已弃用,转而支持sns.histplot

ax = sns.histplot(x, kde=True, stat='density')
ax2 = ax.twinx()
sns.boxplot(x=x, ax=ax2)
ax2.set(ylim=(-.5, 10))

相关问题