R语言代码Rstudio绘图SCI科研生信医学桑基热图数据分析作图教程
以下是为您整理的R语言在生物医学数据分析、可视化及SCI科研绘图方面的全方位教程,包含代码示例和实战技巧:
一、R语言在生信医学中的核心应用
1. 数据清洗与预处理
r复制代码
# 导入CSV数据
data <- read.csv("clinical_data.csv", stringsAsFactors = FALSE)
# 处理缺失值(以均值填充)
data$age[is.na(data$age)] <- mean(data$age, na.rm = TRUE)
# 数据类型转换
data$gender <- factor(data$gender, levels = c("Male", "Female"))
# 提取子数据集
subset_data <- data[data$age > 18 & data$bmi < 30, ]
2. 生存分析(以癌症研究为例)
r复制代码
# 安装并加载生存分析包
install.packages("survival")
library(survival)
# 构建生存对象(time=生存时间,status=事件状态)
surv_obj <- Surv(time = data$os_time, event = data$os_status)
# 拟合Cox比例风险模型
cox_model <- coxph(surv_obj ~ age + gender + stage, data = data)
# 可视化生存曲线
library(survminer)
ggsurvplot(survfit(cox_model), data = data, pval = TRUE)
二、RStudio高级绘图教程
1. 桑基图(资源流动可视化)
使用networkD3
包:
r复制代码
# 安装包
install.packages("networkD3")
library(networkD3)
# 定义节点和流动关系
nodes <- data.frame(name = c("基因A", "基因B", "表型X", "表型Y"))
links <- data.frame(
source = c(0, 1, 0, 1),
target = c(2, 3, 3, 2),
value = c(10, 5, 3, 2)
)
# 绘制桑基图
sankeyNetwork(
Links = links,
Nodes = nodes,
Source = "source",
Target = "target",
Value = "value",
NodeID = "name",
fontSize = 12,
opacity = 0.8
)
2. 热图(基因表达/相关性矩阵)
使用ggplot2
包:
r复制代码
# 生成示例矩阵
set.seed(123)
expr_matrix <- matrix(rnorm(100), nrow = 10, ncol = 10)
colnames(expr_matrix) <- paste0("Gene", 1:10)
rownames(expr_matrix) <- paste0("Sample", 1:10)
# 转换为长格式数据
library(reshape2)
melted_data <- melt(expr_matrix)
# 绘制热图
library(ggplot2)
ggplot(melted_data, aes(x = Var2, y = Var1, fill = value)) +
geom_tile(color = "white") +
scale_fill_gradient2(low = "blue", high = "red", mid = "white") +
theme_minimal() +
labs(title = "基因表达热图", x = "基因", y = "样本")
三、SCI科研绘图实战技巧
-
图表美化原则:
-
配色方案:使用
RColorBrewer
包选择期刊友好的配色。 -
字体调整:通过
theme()
函数统一设置字体大小和样式。 -
分辨率优化:保存图片时指定
dpi=300
以确保印刷质量。
-
配色方案:使用
- 多组学数据整合可视化:
r复制代码
# 假设有基因表达、甲基化和临床数据
library(ComplexHeatmap)
Heatmap(
matrix = list(expr = expr_matrix, methy = matrix(rnorm(100), 10)),
col = list(expr = colorRamp2(c(-2, 0, 2), c("blue", "white", "red")),
methy = colorRamp2(c(-1, 0, 1), c("green", "black", "yellow"))),
show_row_names = FALSE,
cluster_rows = TRUE
)
- 交互式图表(适合在线发表):
r复制代码
# 使用plotly包生成交互式热图
library(plotly)
plot_ly(
x = colnames(expr_matrix),
y = rownames(expr_matrix),
z = expr_matrix,
type = "heatmap",
colors = "RdBu"
) %>% layout(title = "交互式基因表达热图")
四、学习资源推荐
-
视频课程:
- 《R语言进阶数据画图14课》(适合新手入门)
- 《基于R语言的科研数据分析与可视化》(含空间数据分析)
-
书籍:
- 《ggplot2: Elegant Graphics for Data Analysis》
- 《R for Data Science》(在线免费版:https://r4ds.had.co.nz/%EF%BC%89
-
社区支持:
- Stack Overflow:代码调试首选平台
- Biostars:生信分析专业论坛
掌握这些技能后,您可轻松复现以下SCI常见图表:
- 生存曲线(临床预后分析)
- 火山图(差异表达分析)
- 网络图(分子相互作用)
- 多组学关联热图(整合组学数据)