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

使用ggVennDiagram可视化多指标成功率的问题求助

简洁韦恩图实现方案(针对指标成败分布)

核心思路

把每个试验(trial)的成功指标集合提取出来,比如某条trial仅metricA、metricC成功,就对应集合{metricA, metricC},让ggVennDiagram直接识别这些集合的交叉关系。

步骤代码

  1. 安装并加载依赖包
# 首次运行需安装
install.packages(c("tidyverse", "ggVennDiagram"))
# 加载包
library(tidyverse); library(ggVennDiagram)
  1. 预处理数据:生成每个trial的成功指标列表
    假设你的数据集名为df,执行以下代码:
# 按行提取每个trial的成功指标集合
success_sets <- df %>%
  rowwise() %>%
  mutate(
    success_metrics = list(
      c(
        ifelse(metricA == "success", "metricA", NA),
        ifelse(metricB == "success", "metricB", NA),
        ifelse(metricC == "success", "metricC", NA),
        ifelse(metricD == "success", "metricD", NA)
      ) %>% na.omit() # 过滤失败的指标
    )
  ) %>%
  pull(success_metrics) # 提取为列表格式
  1. 绘制韦恩图
ggVennDiagram(success_sets) +
  # 可选:调整填充色,让交叉区域更直观
  scale_fill_gradient(low = "white", high = "#63B8FF")

额外说明

  • 图中每个区域的数值代表对应指标组合的trial数量,RStudio中鼠标悬停可查看详情
  • 若要计算特定占比(如成功metricA但失败metricC的trial占比),可提取区域统计数据:
venn_stats <- ggVennDiagram(success_sets)@data
# 查看所有区域的统计结果
print(venn_stats)
# 计算成功A但失败C的占比(即仅属于A的数量 / 所有成功A的数量)
only_A <- venn_stats$count[venn_stats$name == "metricA"]
total_A <- sum(venn_stats$count[str_detect(venn_stats$name, "metricA")])
only_A / total_A

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:22:11