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

如何在Seaborn relplot中绘制标准误差棒?多种尝试未果

绘制带标准误差棒的结果图表

问题核心原因

  • sns.relplot()默认绘制散点图,ci参数仅在折线图模式(kind='line')下生效,用于展示聚合后的置信区间或标准误差。
  • 数据过滤存在索引错误:原代码中R_filtered=RR_filtered[(Results['Material']=='A')]使用原始数据集索引匹配子集,会导致结果异常,应改为RR_filtered['Material']。
  • ax.errorbar()添加失败是因为relplot返回的是FacetGrid对象而非单个Axes,需遍历子图操作。

解决方案一:利用Seaborn自动计算误差棒

切换为折线图模式,通过ci='sd'展示标准差(若需标准误差可自定义聚合逻辑),同时修正过滤逻辑:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 读取数据
Results = pd.read_excel('results.xlsx', sheet_name='Sheet1', usecols="A:J")

# 修正数据过滤逻辑
RR_filtered = Results[(Results['Mineral'] == 'IC60') | (Results['Mineral'] == 'MinFree')]
R_filtered = RR_filtered[RR_filtered['Material'] == 'A']
R2_filtered = RR_filtered[RR_filtered['Material'] == 'B']

palette = ["#fdae61", "#abd9e9"]
sns.set_palette(palette)

# 绘制带标准误差的折线图
g1 = sns.relplot(data=R_filtered, x="Impeller speed (rpm)", y="Result", 
                 col="Media size", hue="Mineral content (g/g fibre)",
                 palette=palette, kind='line', ci='sd', marker='o')

g2 = sns.relplot(data=R2_filtered, x="Impeller speed (rpm)", y="Result", 
                 col="Media size", hue="Mineral content (g/g fibre)",
                 palette=palette, kind='line', ci='sd', marker='o')

plt.show()

解决方案二:使用预计算的均值和标准误差添加误差棒

先按分组计算统计值,再遍历FacetGrid子图手动添加误差棒:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

Results = pd.read_excel('results.xlsx', sheet_name='Sheet1', usecols="A:J")
RR_filtered = Results[(Results['Mineral'] == 'IC60') | (Results['Mineral'] == 'MinFree')]
R_filtered = RR_filtered[RR_filtered['Material'] == 'A']

# 按分组计算均值和预存的标准误差
agg_data = R_filtered.groupby(['Media size', 'Impeller speed (rpm)', 'Mineral content (g/g fibre)']).agg(
    mean_result=('Result', 'mean'),
    se_result=('ster', 'mean')
).reset_index()

palette = ["#fdae61", "#abd9e9"]
sns.set_palette(palette)

# 绘制基础散点图
g = sns.relplot(data=R_filtered, x="Impeller speed (rpm)", y="Result", 
                col="Media size", hue="Mineral content (g/g fibre)",
                palette=palette, size="Media size", sizes=(50, 200))

# 遍历子图添加误差棒
for ax in g.axes.flat:
    # 获取当前子图对应的介质尺寸
    col_val = float(ax.get_title().split('=')[1].strip())
    sub_agg = agg_data[agg_data['Media size'] == col_val]
    
    # 按矿物含量分组添加误差棒
    hue_vals = sub_agg['Mineral content (g/g fibre)'].unique()
    for idx, hue_val in enumerate(hue_vals):
        subset = sub_agg[sub_agg['Mineral content (g/g fibre)'] == hue_val]
        ax.errorbar(subset['Impeller speed (rpm)'], subset['mean_result'], 
                    yerr=subset['se_result'], fmt='none', capsize=5, 
                    color=palette[idx])

plt.show()

原始数据

Media size  Material    Impeller speed (rpm)    Energy input (kWh/t)    Mineral     Mineral content (g/g fibre) Result  ster
1.7 A   400 3000    IC60    4   3.42980002276166    0.21806853183829
1.7 A   650 3000    IC60    4   5.6349292302978 0.63877270588513
1.7 A   900 3000    IC60    4   6.1386616444364 0.150420705145224
1.7 A   1150    3000    IC60    4   5.02677117937851    1.05459146256349
1.7 A   1400    3000    IC60    4   3.0654271029038 0.917937247698497
3   A   400 3000    IC60    4   8.06973541574516    2.07869756201064
3   A   650 3000    IC60    4   4.69110601906018    1.21725878149246
3   A   900 3000    IC60    4   10.2119514553564    1.80680816945106
3   A   1150    3000    IC60    4   7.3271067522139 0.438931805677489
3   A   1400    3000    IC60    4   4.86901883487513    2.04826541508181
1.7 A   400 3000    MinFree 0   1.30614274245145    0.341512517371074
1.7 A   650 3000    MinFree 0   0.80632268273782    0.311762840996982
1.7 A   900 3000    MinFree 0   1.35958635068886    0.360649049944933
1.7 A   1150    3000    MinFree 0   1.38784671261469    0.00524838126778526
1.7 A   1400    3000    MinFree 0   1.12365621425779    0.561737044169193
3   A   400 3000    MinFree 0   4.61104587078813    0.147526557483362
3   A   650 3000    MinFree 0   4.40934493149759    0.985706944001226
3   A   900 3000    MinFree 0   5.06333415444978    0.00165055503033251
3   A   1150    3000    MinFree 0   3.85940865344646    0.731238210429852
3   A   1400    3000    MinFree 0   3.75572328102963    0.275897272330075
3   A   400 3000    GIC 4   6.05239906571977    0.0646300937591957
3   A   650 3000    GIC 4   7.9023202316634 0.458062146361444
3   A   900 3000    GIC 4   6.97774277141699    0.171777036954104
3   A   1150    3000    GIC 4   11.0705742735252    1.3960974547215
3   A   1400    3000    GIC 4   9.37948091546579    0.0650589433632627
1.7 A   869 3000    IC60    4   2.39416757908564    0.394947207603093
3   A   859 3000    IC60    4   10.2373958352881    1.55162686552938
1.7 A   885 3000    BHX 4   87.7569689333017    10.2502550323564
3   A   918 3000    BHX 4   104.135074642339    4.77467275433362
1.7 B   400 3000    MinFree 0   1.87573877068556    0.34648345153664
1.7 B   650 3000    MinFree 0   1.99555403904079    0.482200923313764
1.7 B   900 3000    MinFree 0   2.54989484285768    0.398071770532481
1.7 B   1150    3000    MinFree 0   3.67636872311402    0.662270521850053
1.7 B   1400    3000    MinFree 0   3.5664978541551 0.164453275639932
3   B   400 3000    MinFree 0   2.62948341485392    0.0209463845730038
3   B   650 3000    MinFree 0   3.0066638279753 0.305024483713006
3   B   900 3000    MinFree 0   2.79255446831386    0.472851866083359
3   B   1150    3000    MinFree 0   5.64970870330824    0.251859240942665
3   B   1400    3000    MinFree 0   7.40595580787647    0.629256778750272
1.7 B   400 3000    IC60    4   0.38040036521839    0.231869270120922
1.7 B   650 3000    IC60    4   0.515922221163329   0.434661621954815
1.7 B   900 3000    IC60    4   3.06358032815653    0.959408177590503
1.7 B   1150    3000    IC60    4   4.04800689693192    0.255594912271896
1.7 B   1400    3000    IC60    4   3.69967975589305    0.469944383688801
3   B   400 3000    IC60    4   1.35706340378197    0.134829945730943
3   B   650 3000    IC60    4   1.91317966458018    1.77106692180411
3   B   900 3000    IC60    4   0.874227487043329   0.493348110823194
3   B   1150    3000    IC60    4   2.71732337235447    0.0703901684702626
3   B   1400    3000    IC60    4   4.96743231003956    0.45853815499614
3   B   400 3000    GIC 4   0.325743752029247   0.325743752029247
3   B   650 3000    GIC 4   3.12776074994155    0.452049425276085
3   B   900 3000    GIC 4   3.25564762321322    0.319567445434468
3   B   1150    3000    GIC 4   5.99730462724499    1.03439035936441
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:01:34