差异与效应火山与曼哈顿No. 156

火山图与富集结果组合图

Volcano Plots Enrichment Results

核心用途

从显著差异特征延伸到功能条目,联合观察变化方向、效应强度和通路层面解释。

组学与分子
绘图方案No.156 · 火山图与富集结果组合图切换语言或图形版本,成图、提示词与代码会同步更新。
实现语言
AI 绘图提示词Python · 完整内容

你是一名擅长科研统计和论文级数据可视化的 Python 工程师。

请根据我提供的数据,生成一份完整、可运行、可复用的 Python 脚本,以差异特征火山图和富集结果图为主要设计方向。只有同时具有有效效应量和显著性时才绘制火山图;否则应根据数据改用统计含义成立的简化图形。如果我没有提供数据,则按下述模拟数据规则生成演示。

我可能同时提供参考图片或现有代码,也可能只提供数据。有参考图片时,参考其配色、字体、线条、标注、留白和整体科研插图风格,但不要复制其中的名称、数值、阈值和统计结论;有现有代码时,可以参考其工具包和绘图方法,但应删除写死的文件名、路径、列名和示例参数;没有图片或代码时,直接根据本提示完成,不必要求我补充。目标是延续这类图的信息表达和视觉气质,而不是机械复刻固定图片、固定代码或固定行列结构。科学含义、数据支持程度和可读性优先于视觉相似度。

首先读取并检查数据,将实际列名映射到相应语义字段。差异分析通常需要特征 ID、效应量以及原始 P 值、校正 P 值或 FDR;富集数据可以包含条目名称、显著性、方向、命中数量或命中特征列表。不要要求客户使用固定列名。如果字段映射、效应量尺度、显著性类型、方向定义或多个表之间的对应关系存在会影响结果的歧义,先提出不超过 3 个具体问题;如果含义明确,就直接继续。多比较数据应检查差异表与富集表是否具有可唯一对应的比较标识,无法对应时不得按行序或名称猜测归属。简要报告字段映射、总行数、有效行数,以及缺失值、无穷值、重复值和被排除记录的情况。

优先选择最少但足以回答问题的图形组件:同时具有有效效应量和显著性时可以绘制火山图;有可靠富集结果时可以增加富集面板;没有富集结果时可以只绘制火山图,或在确有必要且数据支持时增加重点特征排序图;只有富集结果时只绘制富集结果图。已有富集面板时,不要仅因数据可用而额外增加信息重复的排序面板。

缺少 P 值、校正 P 值或 FDR 时,不得根据效应量大小、特征排名、参考图片或经验阈值推断、构造或填补显著性,也不得使用“显著”描述这些特征。没有可靠富集结果,或没有足以执行可审计富集分析的输入、背景集和方法时,不得生成真实富集面板,也不得根据特征名称或参考图片凭经验匹配通路。数据不支持火山图时,应说明原因并建议更合适的图形,不能仍将替代图称为火山图。

布局应根据组件数量、数据集数量、标签长度和输出用途自动决定,不强制复现参考图。一个组件可以使用 1×1;两个组件可以根据标签长度选择 1×2 或 2×1;多个数据集可以使用分面、多行布局或分别输出多张图片。面板过多或标签过长时,应增加画布尺寸或拆分图片,不生成无意义空面板,也不靠过度缩小文字解决。在代码前简要说明最终选择了哪些图形组件、采用什么布局以及原因。

如果我提供了真实数据,必须使用我的数据绘图,不得用模拟数据替换真实数据,也不得为了补齐参考图面板而虚构缺失的统计量或富集结果。只有当缺失字段会改变统计含义或图形类型时才暂停询问;缺少的只是可选辅助字段时,直接退化为数据支持的布局并说明。

如果我没有提供数据,可以进入明确的演示模式,生成结构合理的模拟数据。演示模式和真实数据模式必须显式互斥;真实数据读取或验证失败时不得自动切换到演示模式。模拟数据必须明确标注为模拟或演示数据,设置固定随机种子,并使用中性的特征和条目名称,不使用真实基因、患者、疾病、GO、KEGG 或通路名称。合理性只指数据结构、数值关系和取值范围,不代表真实生物学结论。如果同时模拟 raw P 和校正 P 值,校正值应由模拟 raw P 通过明确说明的多重检验校正方法计算,而不是独立随机生成。模拟富集表只用于展示绘图结构,不得声称执行过真实富集分析;演示阈值必须标明为建议或演示值。模拟数据生成函数应与正式的数据读取、验证和绘图函数分离,方便以后替换为真实数据。

如果我只提供了部分数据,不要自动用模拟值填补缺失的分析字段。应说明现有数据能绘制什么、还缺什么,并在缺失内容会改变统计含义或图形类型时,让我在简化真实图、补充数据或单独生成完整模拟演示之间选择。除非我明确要求,不要在同一项统计分析中混合真实数据和模拟数据。

推荐优先使用 pandas、numpy 和 matplotlib;读取 XLSX 时可以使用 openpyxl,标签避让可以使用 adjustText。也可以使用其他成熟工具包,但应说明调整原因。不要在脚本内部自动安装依赖,不要联网补充数据,也不要写死本机绝对路径。

推荐采用简洁、克制的论文插图风格:正向或增加可使用 #C84A5B,负向或降低可使用 #337F9A,不显著可使用 #C8CCD0,文字可使用 #202528,网格可使用 #E6E3DE,背景可使用 #FBFAF7 或白色。关键分类不应只依赖颜色,可结合点型、线型或直接标签。

字体建议使用 Arial、Helvetica、DejaVu Sans 等无衬线回退;正文和刻度可从 8.5~10 pt 起步,面板标题可从 10~12 pt 起步,坐标轴可从 0.6~0.9 pt 起步,阈值线可使用约 0.6~0.8 pt 的细虚线。以上均为建议,不是硬性要求;请根据数据密度、类别数量、标签长度、画布尺寸和参考图片合理调整,并说明重要调整。整体上应减少无关装饰,使用轻量网格和清晰轴标题,只标注少量具有明确选择规则的重要特征,并处理标签碰撞。若当前环境允许执行,生成后至少实际运行一次并检查导出图,避免标题、标签、图例、长文本互相覆盖、被裁切或出现缺字方框;发现问题时应减少标签数量、调整边距或布局、使用数学文本或字体回退后重新导出。

将文件路径、工作表、列映射、显著性阈值、效应阈值、标签数量、画布尺寸和输出目录集中放在脚本顶部的 CONFIG 配置区。阈值必须可配置;如果我没有提供阈值,可以给出领域常见的建议值,但必须说明它只是建议。无法确认校正方法时,保留原始统计量名称作为轴标签和图注,不要把 q-value 强行改称 FDR。

准确区分 raw P、adjusted P 和 FDR,并在坐标轴、图注和运行摘要中正确标注。P 值为 0 时,只能在绘图使用的派生数据中设置显示下限,不能修改原始数据。不得联网执行或虚构 GO、KEGG 等富集分析,除非我明确要求并提供必要信息。

代码应将读取、验证、转换、绘图和导出组织为清晰函数,输入文件保持只读,并能在无图形界面的环境运行。

请依次提供:简要的数据字段映射和布局选择;依赖及一次性安装命令;完整可运行的 Python 脚本;运行方法和输出文件说明;相对参考图或上述建议所做的主要调整。

默认导出 300 DPI PNG 以及 SVG 或 PDF 矢量版本,画布尺寸、文件名和输出格式放入 CONFIG。不得使用伪代码或省略号代替完整实现。

plot.pyPython · 结构节选 · 747 B

代码区域仅展示源文件开头与结尾,中间部分已省略。