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

如何用ggplot绘制分色区分不同样本基因表达的散点图

实现步骤

你现在用的是宽格式数据表(每个样本单独占一列表达量),ggplot2做分组颜色映射需要先把数据转换为长格式,再将样本分类列映射到color美学属性即可,具体操作如下:

  • 首先加载所需工具包(未安装的话先运行install.packages("tidyverse")完成安装)
    library(tidyverse)
  • 将宽格式表转换为ggplot适配的长格式
# 转换后数据会新增两列:sample存样本名、expression存对应表达量
dataset_long <- dataset %>%
  pivot_longer(
    cols = !gene_name,
    names_to = "sample",
    values_to = "expression"
  )
  • 直接绘图,将颜色映射到sample列即可自动给不同样本分配不同颜色,每个基因的x轴位置会对应生成两个散点
ggplot(data = dataset_long, mapping = aes(x = gene_name, y = expression, color = sample)) +
  geom_point(size = 2) + # 可按需调整点大小
  # 可选:自定义配色,替换成你想要的颜色
  scale_color_manual(values = c("sample1" = "navy", "sample2" = "darkorange")) +
  # 可选:如果基因数量较多x轴标签重叠,可旋转标签适配
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

备选方案(不推荐)

如果你不想做数据重塑,也可以直接叠加两层散点几何对象分别指定y值和颜色,但这种写法后续加样本、调整图例的维护成本更高:

ggplot(data = dataset, aes(x = gene_name)) +
  geom_point(aes(y = sample1, color = "sample1")) +
  geom_point(aes(y = sample2, color = "sample2")) +
  scale_color_manual(values = c("sample1" = "navy", "sample2" = "darkorange"))

内容的提问来源于stack exchange,提问作者Manuela Lanzafame

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:27:17