BioF3 FigCode · SCI 绘图代码集

蛋白互作网络(PPI Network)

导出日期:2026年6月27日

分类:网络与互作 | 依赖包:STRINGdb、igraph、ggraph、tidygraph

解决的生物学问题

我的差异蛋白之间有多少已知的互作关系?哪些是 hub 节点?

应用场景

输入数据格式

差异基因/蛋白列表 + 物种 ID(人 = 9606)

关键参数

快速开始

1. 直接在线运行

打开 FigCode 在线绘图,点击本工具卡片的"在线绘图"按钮即可用内置示例数据出图,零环境配置。

2. 本地复现

下载脚本和示例数据,本地 RStudio 运行:

# 下载
curl -O https://<your-site>/figcode/scripts/ppi-network.R
curl -O https://<your-site>/figcode/data/ppi-network.csv

3. 安装依赖

# CRAN 包
install.packages(c("STRINGdb", "igraph", "ggraph", "tidygraph"))

# Bioconductor 包(如需)
# BiocManager::install(c())

完整代码

library(STRINGdb)
library(igraph)
library(ggraph)
library(tidygraph)

# --- Demo gene list ---
genes <- c("TP53","BRCA1","BRCA2","EGFR","MYC","CDK1","CDK2","CCNB1",
           "MDM2","RB1","E2F1","CCNE1","CDKN1A","CDKN2A","ATM")
log2fc <- setNames(rnorm(length(genes), 0, 1.5), genes)

# --- STRING ---
string_db <- STRINGdb$new(
  version = "12.0",
  species = 9606,
  score_threshold = 700,
  network_type = "physical",
  input_directory = ""
)
mapped <- string_db$map(data.frame(gene = genes), "gene", removeUnmappedRows = TRUE)
edges <- string_db$get_interactions(mapped$STRING_id)

# Convert STRING IDs back to gene symbols
id_to_gene <- setNames(mapped$gene, mapped$STRING_id)
edges_g <- data.frame(
  from = id_to_gene[edges$from],
  to   = id_to_gene[edges$to],
  weight = edges$combined_score / 1000
)

g <- as_tbl_graph(edges_g, directed = FALSE) %>%
  activate(nodes) %>%
  mutate(degree  = centrality_degree(),
         log2fc  = log2fc[name])

# --- Plot ---
ggraph(g, layout = "fr") +
  geom_edge_link(aes(alpha = weight), edge_colour = "grey60") +
  geom_node_point(aes(size = degree, color = log2fc)) +
  geom_node_text(aes(label = name), repel = TRUE, size = 3) +
  scale_color_gradient2(low = "#2563eb", mid = "white", high = "#dc2626") +
  scale_size(range = c(2, 8)) +
  theme_void() +
  ggtitle("PPI Network — STRING (score > 700)")

替换为自己的数据

脚本中以 # --- Demo data --- 标注的段落是示例数据生成代码。替换为自己的数据时,保持列名一致即可:

延伸阅读