Seaborn:用直方图上的误差条覆盖箱形图或平均值

时间:2016-08-29 06:53:39

标签: python matplotlib histogram data-visualization seaborn

我在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')

这会产生以下输出:standard histogram.

我还想在同一个图上可视化该数据集的平均值+标准偏差,理想情况是通过在x轴(或x轴上方)上设置平均点,并显示标准的缺口误差条偏差。另一种选择是拥抱x轴的箱线图。我试着添加被注释掉的行(sns.boxplot()),但它看起来非常难看,而不是我正在寻找的东西。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

箱形图是在分类轴上绘制的,并且不会与直方图的密度轴很好地共存,但是可以用双x轴图来做到这一点:

import numpy as np
import seaborn as sns

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

enter image description here