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

Python创建保存指定结构数据集的Raincloud雨云图实现方法求助

Python Raincloud雨云图实现方案

1. 依赖库准备

  • 需要提前安装核心依赖:pandas、matplotlib、seaborn,标准雨云图可额外安装ptitprince库
  • 安装命令:pip install pandas matplotlib seaborn ptitprince

2. 数据格式转换

现有宽表结构需要先转换为seaborn支持的长表格式,代码示例:

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

# 读入原始数据集
df = pd.read_csv("你的数据集路径.csv")

# 宽表转长表,将Col1~Col10的测量值合并为统一的数值列
df_long = df.melt(
    id_vars=["Sample", "Replicate", "Timepoint"],
    value_vars=[f"Col{i}" for i in range(1, 11)],
    var_name="Variable",
    value_name="Measurement"
)

3. 单图全样本绘制方案

按照「每个样本单独占一行、同时间点重复结果并排」的需求,基于FacetGrid实现:

# 设置绘图风格
sns.set_style("whitegrid")

# 初始化网格布局,row参数指定按Sample分行
g = sns.FacetGrid(
    df_long,
    row="Sample",
    height=3,  # 每行高度
    aspect=6,  # 宽高比,适配100个时间点的横向展示需求
    sharex=True,
    sharey=True
)

# 绘制雨云图
g.map_dataframe(
    pt.RainCloud,
    x="Timepoint",
    y="Measurement",
    hue="Replicate",
    width_viol=0.6,  # 半小提琴宽度
    width_box=0.2,   # 内嵌箱线宽度
    orient="v",
    alpha=0.7,
    dodge=True  # 同时间点不同重复自动错开并排
)

# 调整布局
g.add_legend()
g.set_xticklabels(rotation=45)  # 时间点过多时可旋转标签避免重叠
plt.tight_layout()

# 保存图片,dpi调高避免模糊
plt.savefig("raincloud_result.png", dpi=300, bbox_inches="tight")
plt.show()

4. For循环单样本单独生成方案

如果需要每个样本单独保存为独立文件,可通过For循环实现:

sample_list = df_long["Sample"].unique()
for sample in sample_list:
    sample_df = df_long[df_long["Sample"] == sample]
    plt.figure(figsize=(18, 3))
    pt.RainCloud(
        data=sample_df,
        x="Timepoint",
        y="Measurement",
        hue="Replicate",
        width_viol=0.6,
        orient="v",
        dodge=True
    )
    plt.title(f"Sample {sample} 测量结果")
    plt.xticks(rotation=45)
    plt.tight_layout()
    plt.savefig(f"Sample_{sample}_raincloud.png", dpi=300, bbox_inches="tight")
    plt.close()

5. 可选调整方案

  • 如果不需要散点+箱线的雨云结构,仅需绘制半小提琴图,可将pt.RainCloud替换为sns.violinplot,添加split=True参数即可
  • 如果需要按10个变量分列展示,只需在FacetGrid初始化时添加col="Variable"参数
  • 18个样本的整体图高度可通过调整height参数适配,宽度可调整aspect参数

内容的提问来源于stack exchange,提问作者Jas.flo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:18:00