为何Seaborn lineplot设置ci=100的置信区间未覆盖全部数据?
问题:Seaborn lineplot设置
errorbar=('ci',100)未覆盖数据完整范围 数据情况
我有一个名为df1的DataFrame,其.head()输出如下:
month temp date 2023-01-01 01:00:00 1 11.0 2023-01-01 02:00:00 1 11.0 2023-01-01 03:00:00 1 10.0 2023-01-01 04:00:00 1 10.0 2023-01-01 05:00:00 1 10.0
尝试的代码
我想用Seaborn的lineplot展示数据的完整范围(最小值、最大值、均值),于是假设设置x='month'、y='temp',并将置信区间参数设为errorbar=('ci', 100)就能覆盖全部数据,使用的代码如下:
sns.lineplot(data=df,x='month',y='temp',errorbar=('ci', 100),ax=ax[0])
遇到的问题
实际绘图后,区间范围比数据的最大/最小值范围更窄,如图所示:
请问我的操作或假设哪里出错了?
解答
你的核心错误是混淆了「100%置信区间」和「数据的极值范围」:
errorbar=('ci', 100)计算的是基于样本统计的100%置信区间,它本质是通过样本数据估算总体均值的可信范围,并非直接取每个分组的最大值和最小值。- 100%置信区间的计算逻辑是围绕均值,结合样本标准差、样本量等统计量推导出来的范围,它不一定包含所有样本点,更不会等同于分组的极值区间。
如果想要展示每个
month分组下temp的均值、最小值和最大值,直接指定errorbar参数为'min_max'即可,修改后的代码:sns.lineplot(data=df, x='month', y='temp', errorbar='min_max', ax=ax[0])这样就能在图中直接呈现每个分组的完整数据范围(最小值到最大值),同时保留均值线。
内容的提问来源于stack exchange,提问作者Moataz Imad
相关产品推荐
相关产品推荐

