【问题标题】:Seaborn: Overlaying a box plot or mean with error bars on a histogramSeaborn:在直方图上用误差线覆盖箱形图或均值
【发布时间】:2017-01-05 03:00:49
【问题描述】:

我正在 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()),但它看起来超级丑陋,根本不是我想要的。有什么建议吗?

【问题讨论】:

    标签: python matplotlib histogram data-visualization seaborn


    【解决方案1】:

    箱线图绘制在分类轴上,不会与直方图的密度轴很好地共存,但可以使用双 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))
    

    【讨论】:

    • 很好,谢谢。有什么方法可以使用增强的 95% 置信区间作为箱线图,或者仅将平均值和标准差显示为带有误差线的点而不是箱线图?
    • 我使用了“notch”函数为我的箱线图添加了 95 % 的置信区间。您应该可以使用 Matplotlib 函数对其进行修改。 (1)matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.box。 (2)matplotlib.org/examples/pylab_examples/boxplot_demo3.html。下面是一些关于如何使用它的示例代码:ax = sns.boxplot(x='VALUE-Y', y='VALUE-X', data=samples, notch=True)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 2019-10-12
    • 2018-07-02
    • 2021-06-23
    • 2012-08-14
    • 1970-01-01
    • 2017-02-26
    相关资源
    最近更新 更多