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

ggvenn绘制韦恩图时出现无来源额外共享值问题求助

问题与解决方案

问题描述

使用ggvenn工具结合三列CSV文件生成韦恩图时,出现异常:

  • Dro与Xvm组间显示额外的共享计数(标记为“?”)
  • Dro和Xvm组各含3个有效元素,且不应存在仅属于二者的共享值,但图中显示两组总共有4个元素,还出现未知共享值
  • 已排查CSV无隐藏空格,查看ggvenn_data发现两组包含若干空字符串;启用show_elements=T仍无法查看未知共享值内容,无法定位问题

相关代码与数据

数据读取与格式转换

# 读取CSV文件
data <- read.table("infile.csv", header = T, sep = ",")

# 转换为ggvenn适用格式
ggvenn_data <- list(
  Dro = data$Dro_v_Con,
  Foc = data$Foc_v_Con,
  Xvm = data$Xvm_v_Con
)

ggvenn_data输出

$Dro
 [1] "M830.837T11.111"  "M883.492T15.092"  "M367.151T397.982" ""                 
 [5] ""                 ""                 ""                 ""                 
 [9] ""                 ""                 

$Foc
 [1] "M883.492T15.092"  "M1279.087T13.111" "M830.837T11.111"  "M1116.775T17.12" 
 [5] "M1244.755T16.127" "M1030.792T17.119" "M1334.742T13.111" "M1239.758T16.118"
 [9] "M1472.714T13.108" "M970.807T12.104" 

$Xvm
 [1] "M1094.782T12.105" "M991.807T13.109"  "M830.837T11.111"  ""                 
 [5] ""                 ""                 ""                 ""                 
 [9] ""                 ""    

韦恩图绘制代码

ggvenn_plot <- ggvenn(ggvenn_data, fill_color = c("#0073C2FF", "#EFC000FF", "#CD534CFF"),
  stroke_size = 0.5, show_percentage = F, show_elements = F) +
  theme_void()

可复现数据

list(Dro = c("M830.837T11.111", "M883.492T15.092", "M367.151T397.982", 
"", "", "", "", "", "", ""), Foc = c("M883.492T15.092", "M1279.087T13.111", 
"M830.837T11.111", "M1116.775T17.12", "M1244.755T16.127", "M1030.792T17.119", 
"M1334.742T13.111", "M1239.758T16.118", "M1472.714T13.108", "M970.807T12.104"
), Xvm = c("M1094.782T12.105", "M991.807T13.109", "M830.837T11.111", 
"", "", "", "", "", "", ""))

解决方案

问题根源

ggvenn会将空字符串""视为有效元素统计,Dro和Xvm组都包含多个空字符串,这些空字符串被判定为两组共有的元素,导致出现额外共享计数。

修复代码

生成ggvenn_data时过滤掉每组的空字符串:

# 转换格式并过滤空字符串
ggvenn_data <- list(
  Dro = data$Dro_v_Con[data$Dro_v_Con != ""],
  Foc = data$Foc_v_Con[data$Foc_v_Con != ""],
  Xvm = data$Xvm_v_Con[data$Xvm_v_Con != ""]
)

或用purrr包批量处理:

library(purrr)
ggvenn_data <- map(ggvenn_data, ~ .x[.x != ""])

效果验证

处理后重新绘制韦恩图,将得到正确计数:

  • Dro组:3个元素
  • Xvm组:3个元素
  • 二者仅与Foc组共享M830.837T11.111,无仅属于彼此的共享元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 11:44:55