You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在plotnine中仅为单个分组添加误差棒?

在plotnine中为指定分组添加误差棒并指定图层数据子集

实现仅为Type=A的分组添加误差棒

首先需要为误差棒准备上下限数据(原数据无误差值,这里模拟±0.2的误差),然后在geom_errorbar图层中指定仅使用Type为A的数据:

完整代码示例

import pandas as pd
from plotnine import ggplot, aes, geom_line, geom_errorbar

# 初始化数据框
dat = pd.DataFrame(data={"Type":["A","A","B","B"],"x":[1,2,1,2],"y":[1,2,2,4]})
# 添加误差棒上下限列
dat['y_min'] = dat['y'] - 0.2
dat['y_max'] = dat['y'] + 0.2

# 绘制折线+指定分组的误差棒
(ggplot(dat, aes(x="x", y="y", linetype="Type"))
 + geom_line()
 # 为Type=A的分组添加误差棒
 + geom_errorbar(
     aes(ymin="y_min", ymax="y_max"),
     data=dat[dat['Type'] == 'A'],  # 指定该图层使用的数据子集
     width=0.1  # 误差棒横向宽度
 )
)

plotnine中指定图层数据子集的两种常用方法

1. 直接传入筛选后的数据框

在图层的data参数中,传入经过筛选/处理后的子数据框,适合需要对数据进行复杂预处理的场景:

# 示例:筛选Type=A的数据传给误差棒图层
geom_errorbar(aes(ymin="y_min", ymax="y_max"), data=dat[dat['Type'] == 'A'])

2. 使用subset参数筛选

通过subset参数传入布尔条件,直接在原数据框中筛选符合条件的行,代码更简洁,适合简单条件筛选:

# 示例:用subset参数指定Type=A的子集
geom_errorbar(aes(ymin="y_min", ymax="y_max"), subset=(dat['Type'] == 'A'))

注意事项

  • 误差棒必须指定ymin和ymax映射,所以需要提前准备好对应的数据列;
  • 如果图层的美学映射(aes)与主图不同,也可以在图层内单独定义aes。

内容的提问来源于stack exchange,提问作者Wyatt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 13:12:34