在ggplot2中标记特定点

时间:2015-09-17 21:53:08

标签: r ggplot2 labels

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

((Sub *)really_a_Base_ptr)->value

依此类推。我试图通过ggplot绘制A列和B列,并且我成功并且可以用相应的基因名称标记所有点。但是,我如何突出(即颜色,大小变化)个别感兴趣的基因? (又说:我如何为我手边的10个基因列表制作数据点?或者我如何在不注释所有其他点的情况下在散点图上注释我感兴趣的基因?)

我尝试使用Base功能,但我在R的新手角色让我陷入困境。

1 个答案:

答案 0 :(得分:5)

您需要创建一个新变量来区分您想要突出显示的观察结果。

让我们模拟一个data.frame:

df <- data.frame(genes=letters,
                 A=runif(26),
                 B=runif(26))

您当前的情节应如下所示(点+标签):

ggplot(data=df,aes(x=A,y=B,label=genes)) +
  geom_point() +
  geom_text(hjust=-1,vjust=1)

为了突出一些基因,我们创建了一个新变量group。我将“重要”分配给某些任意基因。例如,您可能希望通过寻找异常值来以编程方式执行此操作。

df$group <- "not important"
df$group[df$genes %in% c("d","g","b")] <- "important"

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

ggplot(data=df,aes(x=A,y=B,label=genes)) +
  geom_point(aes(color=group)) +
  geom_text(hjust=-1,vjust=1)

enter image description here

但是,您也可以在单独的图层上绘制每个组。要明确突出重要的基因。在这种情况下,我们首先添加所有点,然后添加一个仅包含重要基因的新geom_point,具有特殊属性(此处为颜色和大小)。

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)

enter image description here