首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ggplot2中标记特定点

在ggplot2中标记特定点
EN

Stack Overflow用户
提问于 2015-09-18 05:53:08
回答 1查看 19.4K关注 0票数 5

我正在尝试在ggplot2中标记特定散点图中的各个兴趣点。我的数据以具有多列的csv文件的形式存在。

代码语言:javascript
复制
Gene       chr    start    stop      A      B       C       D      E
APOBEC3G   chr22  39472992 39483773  97.06  214.56  102.34  20.00  19.45  
APOBEC3C ... 

以此类推。我正在尝试通过ggplot绘制A列与B列,我成功了,可以用相应的基因名称标记所有的点。但是,我如何突出显示(即颜色、大小改变)感兴趣的单个基因?(又名:如何让我手头上的10个基因列表的数据点脱颖而出?或者,我如何在不注释所有其他点的情况下注释散点图上感兴趣的基因?)

我尝试过使用subset函数,但我在R中的新手角色让我有点束手无策。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-20 18:31:58

您需要创建一个新变量来区分要高亮显示的观测值。

让我们模拟一个data.frame:

代码语言:javascript
复制
df <- data.frame(genes=letters,
                 A=runif(26),
                 B=runif(26))

当前绘图应如下所示(点+标签):

代码语言:javascript
复制
ggplot(data=df,aes(x=A,y=B,label=genes)) +
  geom_point() +
  geom_text(hjust=-1,vjust=1)

为了突出某些基因,我们创建了一个新变量group。我给一些专断的基因指定了“重要”。您可能希望通过编程来实现这一点,例如,通过查找异常值。

代码语言:javascript
复制
df$group <- "not important"
df$group[df$genes %in% c("d","g","b")] <- "important"

现在,有两种方法可以分离这些基因。最特殊的是给出一种颜色(或形状,或大小等)对于两组(一个用于重要基因,一个用于不重要的基因)。这很容易通过将新变量映射到颜色(或大小、形状等)来实现:

代码语言:javascript
复制
ggplot(data=df,aes(x=A,y=B,label=genes)) +
  geom_point(aes(color=group)) +
  geom_text(hjust=-1,vjust=1)

但是,也可以在单独的图层上打印每个组。以清楚地突出重要的基因。在这种情况下,我们首先添加所有的点,然后添加一个新的geom_point,它只包含重要的基因,具有特殊的属性(这里是颜色和大小)。

代码语言:javascript
复制
ggplot(data=df,aes(x=A,y=B,label=genes)) +
  geom_point() +
  geom_point(data=df[df$group == "important",],color="red",size=3) +
  geom_text(hjust=-1,vjust=1)

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32640557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档