ggplot2 中的标签特定点

label specific point in ggplot2

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

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 的新手角色让我有点不知所措。

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

让我们模拟一个 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。我将 "important" 分配给一些任意基因。您可能希望以编程方式执行此操作,例如查找异常值。

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)

但是,您也可以在单独的图层上绘制每个组。明确突出重要基因。在那种情况下,我们首先添加所有点,然后添加一个新的 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)