基于ggplot绘制R密度散点图:单细胞拟批量数据基因共性分析
单细胞拟批量数据的基因相关性可视化分析
1. 生成se1对象
我持有一份单细胞拟批量数据集,通过以下代码生成se1对象:
se1 <- y(scData, group.var = "sample_type", assay = "RNA", sample_id = NA, verbose = F)
注:此处函数y应为拟批量分析相关函数(如aggregateAcrossCells或自定义函数),需确保已加载对应依赖包
2. 普通散点图的基因相关性分析
基于log2归一化计数绘制普通散点图,完成不同类别基因的相关性分析,代码如下:
# 使用log2归一化计数,结果由高表达基因主导 counts <- assays(se1)$log2_tmm_cpm # 获取计数矩阵的列名 colnames(counts) # 选择用于绘图的列 data.plot <- counts[, c(1, 2, 3)] ggplot(data.frame(data.plot), aes(x = data.plot[, 1], y = data.plot[, 2], label = rownames(counts))) + geom_point() + labs(title = "样本1 vs 样本2", x = "样本1", y = "样本2") + stat_cor() + geom_text(nudge_x = 0.3, nudge_y = 0.3)
说明:代码中直接用data.plot[,1]映射x/y轴不够规范,建议改用列名;geom_text会显示所有基因名,数据量大时会严重重叠,仅适合小数据集验证
3. 密度散点图函数验证与优化
为展示基因间表达共性,编写了密度散点图函数,以下是验证与优化建议:
原函数代码
# 创建生成密度散点图的函数 density_scatter_plot <- function(data, x_col, y_col, title, x_label, y_label) { ggplot(data, aes(x = .data[[x_col]], y = .data[[y_col]])) + geom_pointdensity() + scale_color_viridis() + # 使用geom_pointdensity labs(title = title, x = x_label, y = y_label) + stat_cor() }
函数正确性验证与优化点
- 依赖包检查:
geom_pointdensity来自ggpointdensity包,需先执行library(ggpointdensity),否则会报错 - 数据格式要求:输入的
data需为数据框(而非矩阵),使用时需先将counts转换为数据框并保留列名:# 转换数据格式并添加基因名列 df_counts <- as.data.frame(counts) df_counts$gene <- rownames(counts) - 调用示例:正确调用函数的方式:
density_scatter_plot( data = df_counts, x_col = colnames(df_counts)[1], y_col = colnames(df_counts)[2], title = "样本1与样本2的基因表达密度散点图", x_label = "样本1 log2-TMM-CPM", y_label = "样本2 log2-TMM-CPM" ) - 可选优化:添加主题调整(如
theme_minimal())、调整颜色范围(scale_color_viridis(option = "plasma"))、设置点大小(geom_pointdensity(size = 0.5))提升可视化可读性
内容的提问来源于stack exchange,提问作者mmpp
相关产品推荐
相关产品推荐

