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

Seaborn柱状图分组绘制:按实验条件展示技术重复采样数据

实现方案

1. 核心思路

首先把宽格式的原始数据表转换为长格式,拆分出实验条件和重复编号两个维度,再通过seaborn的hue参数绑定实验条件,给每组分配唯一颜色,同组的4次重复用同色展示,直接通过同色柱的高度差判断采样一致性。

2. 完整代码示例

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

# 此处替换为你自己的原始DataFrame变量名,示例中用df_raw指代
# 第一步:宽表转长表,拆分维度字段
df_long = df_raw.melt(
    id_vars="Index", 
    var_name="col_name", 
    value_name="measure_value"
)
# 从列名拆分实验条件和重复编号
df_long[["condition", "replicate"]] = df_long["col_name"].str.split("_", expand=True)

# 第二步:绘制柱状图
plt.figure(figsize=(18, 7))
sns.barplot(
    data=df_long,
    x="col_name",
    y="measure_value",
    hue="condition",
    palette=sns.color_palette("Set2", 8), # 自动生成8种互不重复的专属颜色
    dodge=False, # 关闭分柱逻辑,确保同组重复颜色统一
    errorbar=None # 不需要展示误差棒可保留,需要的话改为"sd"展示标准差即可
)

# 可视化优化
# 简化x轴标签,只展示重复编号
xtick_labels = [lab.split("_")[1] for lab in df_long["col_name"].unique()]
plt.xticks(ticks=range(32), labels=xtick_labels, fontsize=10)
# 加组间分隔线,明确区分8组实验条件
for pos in range(4, 32, 4):
    plt.axvline(x=pos - 0.5, color="#aaa", linestyle="--", alpha=0.6)

plt.xlabel("技术重复编号", fontsize=12)
plt.ylabel("测量值", fontsize=12)
plt.title("8组实验条件的技术重复采样一致性对比", fontsize=14)
plt.legend(title="实验条件", bbox_to_anchor=(1.01, 1), loc="upper left")
plt.tight_layout()
plt.show()

3. 效果说明

生成的图表会按顺序排列8组实验,每组包含4个同色的柱子,分别对应4次技术重复。同组柱子的高度差异越小,说明该实验条件下的采样一致性越好。如果需要调整配色,替换palette参数的色板名称即可,seaborn内置的Paired、tab10等色板都支持生成8种以上的独立颜色。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:36:00