Meta分析森林图美化
ID: 157
美化Meta分析或亚组分析的Forest plot,自定义Odds Ratio点大小和置信区间线条样式。
功能特性
- 读取Meta分析数据(CSV/Excel格式)
- 绘制高质量Forest plot
- 自定义Odds Ratio点的大小、颜色和形状
- 自定义置信区间线条样式(颜色、粗细、端点样式)
- 支持亚组分析展示
- 自动计算并显示汇总效应值
- 输出为PNG、PDF或SVG格式
使用方法
python scripts/main.py --input <data.csv> [options]
参数说明
| 参数 | 类型 | 默认值 | 必填 | 描述 |
|-----------|------|---------|----------|-------------|
| --input, -i | string | - | 是 | 输入数据文件(CSV或Excel) |
| --output, -o | string | forest_plot.png | 否 | 输出文件路径 |
| --format, -f | string | png | 否 | 输出格式(png/pdf/svg) |
| --point-size | int | 8 | 否 | OR点大小 |
| --point-color | string | #2E86AB | 否 | OR点颜色 |
| --ci-color | string | #2E86AB | 否 | 置信区间线条颜色 |
| --ci-linewidth | int | 2 | 否 | 置信区间线条粗细 |
| --ci-capwidth | int | 5 | 否 | 置信区间端点宽度 |
| --summary-color | string | #A23B72 | 否 | 汇总效应点颜色 |
| --summary-shape | string | diamond | 否 | 汇总效应点形状 |
| --subgroup | string | - | 否 | 亚组分析列名 |
| --title, -t | string | Forest Plot | 否 | 图表标题 |
| --xlabel, -x | string | Odds Ratio (95% CI) | 否 | X轴标签 |
| --reference-line | float | 1.0 | 否 | 参考线位置 |
| --width, -W | int | 12 | 否 | 图片宽度(英寸) |
| --height, -H | int | auto | 否 | 图片高度(英寸) |
| --dpi | int | 300 | 否 | 图片分辨率 |
| --font-size | int | 10 | 否 | 字体大小 |
| --style, -s | string | default | 否 | 预设样式(default/minimal/dark) |
输入数据格式
CSV/Excel文件须包含以下列:
| 列名 | 描述 | 类型 |
|------|------|------|
| study | 研究名称 | Text |
| or | Odds Ratio值 | Numeric |
| ci_lower | 置信区间下限 | Numeric |
| ci_upper | 置信区间上限 | Numeric |
| weight | 权重(可选,用于点大小) | Numeric |
| subgroup | 亚组标签(可选) | Text |
示例数据
study,or,ci_lower,ci_upper,weight,subgroup
Study A,0.85,0.65,1.12,15.2,Drug A
Study B,0.72,0.55,0.94,18.5,Drug A
Study C,1.15,0.88,1.50,12.3,Drug B
Study D,0.95,0.75,1.20,14.8,Drug B
示例
基本用法
python scripts/main.py -i meta_data.csv
自定义样式
python scripts/main.py -i meta_data.csv \
--point-color="#E63946" \
--ci-color="#457B9D" \
--point-size=10 \
--ci-linewidth=3 \
-t "Meta-Analysis of Treatment Effects"
亚组分析
python scripts/main.py -i meta_data.csv \
--subgroup subgroup_column \
--summary-color="#F4A261" \
-o subgroup_forest.png
输出PDF矢量图
python scripts/main.py -i meta_data.csv \
-f pdf \
-o forest_plot.pdf
预设样式
default
- 蓝色配色方案
- 标准字体大小
- 白色背景
minimal
- 简洁线条
- 灰度配色方案
- 无网格线
dark
- 深色背景
- 明亮数据点
- 适合深色主题演示
依赖项
- Python >= 3.8
- matplotlib >= 3.5.0
- pandas >= 1.3.0
- numpy >= 1.20.0
- openpyxl >= 3.0.0(用于读取Excel)
输出示例
生成的Forest plot包含:
- 左侧:研究名称列表
- 中间:OR值和置信区间
- 右侧:权重百分比(如有)
- 底部:汇总效应值(菱形标记)
- 参考线(OR=1)
注意事项
- 确保输入文件编码为UTF-8
- 建议使用对数刻度时,OR值会自动转换
- 置信区间跨越1的研究在统计上不显著
- 权重值用于调整点大小,反映研究贡献度
风险评估
| 风险指标 | 评估 | 等级 | |----------------|------------|-------| | 代码执行 | 本地执行Python/R脚本 | Medium | | 网络访问 | 无外部API调用 | Low | | 文件系统访问 | 读取输入文件,写入输出文件 | Medium | | 指令篡改 | 标准提示词指南 | Low | | 数据暴露 | 输出文件保存至工作空间 | Low |
安全检查清单
- [ ] 无硬编码凭据或API密钥
- [ ] 无未授权文件系统访问(../)
- [ ] 输出不暴露敏感信息
- [ ] 已实施提示词注入防护
- [ ] 输入文件路径已验证(无../遍历)
- [ ] 输出目录限制在工作空间内
- [ ] 脚本在沙箱环境中执行
- [ ] 错误信息已脱敏(不暴露堆栈跟踪)
- [ ] 依赖项已审计
前提条件
# Python dependencies
pip install -r requirements.txt
评估标准
成功指标
- [ ] 成功执行主要功能
- [ ] 输出符合质量标准
- [ ] 优雅处理边缘情况
- [ ] 性能可接受
测试用例
- 基本功能:标准输入 → 预期输出
- 边缘情况:无效输入 → 优雅的错误处理
- 性能:大数据集 → 可接受的处理时间
生命周期状态
- 当前阶段:Draft
- 下次审核日期:2026-03-06
- 已知问题:无
- 计划改进:
- 性能优化
- 额外功能支持
Scan to join WeChat group