如何用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
相关产品推荐
相关产品推荐

