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

如何在R语言中绘制按蛋白强度着色的点密度维恩图?

在R中实现带蛋白强度着色的点密度维恩图

完全可以实现,下面是两种实用方案,无需依赖Python:

方案一:使用ggVennDiagram(推荐,基于ggplot2)

这个包能快速生成维恩图框架,结合ggplot2的图层可轻松添加散点并按蛋白强度着色,灵活性极强。

步骤1:安装并加载依赖包

install.packages("ggVennDiagram")
install.packages("ggplot2")
library(ggVennDiagram)
library(ggplot2)

步骤2:整理数据集

假设你的数据是包含蛋白归属与强度的数据框proteins,结构如下:

protein_idin_Ain_Bin_Cin_Dintensity
P01TRUETRUEFALSEFALSE12.3
P02TRUETRUEFALSEFALSE9.7

如果你的数据是集合形式(每个集合为蛋白ID向量),可按以下方式转换为逻辑数据框:

# 替换为你的实际集合数据
set_A <- c("P01", "P02", "P03", "P04", "P05", "P06", "P07", "P08", "P09", "P10")
set_B <- c("P01", "P02", "P03", "P04")
set_C <- c("P03", "P04", "P05", "P06")
set_D <- c("P05", "P06", "P07", "P08")

# 生成包含归属与强度的数据框
proteins <- data.frame(
  protein_id = unique(c(set_A, set_B, set_C, set_D)),
  in_A = unique(c(set_A, set_B, set_C, set_D)) %in% set_A,
  in_B = unique(c(set_A, set_B, set_C, set_D)) %in% set_B,
  in_C = unique(c(set_A, set_B, set_C, set_D)) %in% set_C,
  in_D = unique(c(set_A, set_B, set_C, set_D)) %in% set_D,
  intensity = rnorm(length(unique(c(set_A, set_B, set_C, set_D))), mean = 10, sd = 2) # 替换为你的实际强度数据
)

步骤3:绘制点密度维恩图

# 生成维恩图区域坐标与蛋白对应点的位置
venn_data <- process_data(list(A=set_A, B=set_B, C=set_C, D=set_D))
venn_coords <- generate_points(venn_data) %>% 
  left_join(proteins, by = c("name" = "protein_id"))

# 叠加轮廓与着色散点
ggplot() +
  # 添加维恩图轮廓
  geom_polygon(data = venn_data@region, aes(x=x, y=y, group=id), fill="transparent", color="black") +
  # 添加蛋白点,按强度映射颜色
  geom_point(data = venn_coords, aes(x=x, y=y, color=intensity), alpha=0.7, size=2) +
  # 设置颜色渐变(可自定义)
  scale_color_viridis_c(option = "plasma", name = "蛋白强度") +
  # 隐藏冗余坐标轴
  theme_void() +
  theme(legend.position = "right")

方案二:使用venn包

venn包支持直接绘制带点的维恩图,操作更简洁:

install.packages("venn")
library(venn)

# 构造集合列表
sets <- list(A=set_A, B=set_B, C=set_C, D=set_D)

# 绘制带着色点的维恩图
venn(sets, 
     points = TRUE, 
     col.points = proteins$intensity, 
     cex.points = 2,
     legend = TRUE,
     main = "蛋白组学集合点密度维恩图")
# 添加强度颜色图例
colorbar(proteins$intensity, main = "蛋白强度")

优化提示

  • 若蛋白数量过多导致点重叠,可降低alpha(透明度)或size(点大小)优化显示。
  • 颜色渐变方案可自定义,例如用scale_color_gradient(low="blue", high="red")替换viridis色系。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:40:32