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

基于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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:05:27