前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggplot2着色时如何保留没有用到的因子

ggplot2着色时如何保留没有用到的因子

作者头像
生信交流平台
发布2022-09-21 11:50:48
2530
发布2022-09-21 11:50:48
举报

我们有时候会遇到这样的情况,你的数据分为多个类别,画图的时候是根据这个类别来着色的。后面做了一些处理之后,可能有些类别的数据被过滤掉了,再去画图的时候,颜色就跟前面不对应了。怎么才能解决这个问题呢?下面小编结合一个具体的例子来展示一下。

代码语言:javascript
复制
#创建一个数据框,x,y,z三列,x和y分别对应三个点的横纵坐标,z为三个点的level,用来着色
data=data.frame(x=c(1,2,3),y=c(1,2,3),z=factor(c("low","mid","high"),levels=c("low","mid","high")))
#加载ggplot2
library(ggplot2)
#用散点图划出这三个点,根据z来用三种不同的颜色,点大小为5
ggplot(data,aes(x,y,colour=z))+geom_point(size=5)

这里得到的low,mid和high的颜色分别为红,绿和蓝

如果我们删掉low这个点,我们再来画图看看

代码语言:javascript
复制
#如果这套数据删掉low这个点
#画出来的图颜色会跟前面一张图不对应
ggplot(subset(data,z!="low"),aes(x,y,colour=z))+geom_point(size=5)

你会发现现在mid的颜色不再是绿色,而是红色,虽然high的颜色还是蓝色,但是整体已经乱掉了,legend里面是显示了用到的两个levels

那么怎么才能,让这两个点的颜色保持跟第一张图里面一致呢

代码语言:javascript
复制
#如果想让这两个点的颜色跟前面三个点的颜色对应,可以用scale_colour_hue(drop = FALSE)
ggplot(subset(data,z!="low"),aes(x,y,colour=z))+geom_point(size=5)+
scale_colour_hue(drop = FALSE)

这个时候你会发现,用了scale_colour_hue(drop = FALSE)之后颜色就对上了,legend里面显示了三个levels, 虽然low这个点对应的数据已经不存在了,但是对应的level这里保留了,从而确保了颜色跟第一幅图是对应的。

这种方法在单细胞数据分析的时候很实用,能够保证使用不同的feature分群聚类得到的细胞亚群展示的时候,颜色是一致的,方便对比观察。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信交流平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档