标记ggplot2中的特定点

Mat*_*att 3 r labels 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 ... 
Run Code Online (Sandbox Code Playgroud)

等等等等。我正在尝试通过ggplot绘制A列对B列,并且我成功了,并且可以用相应的基因名称标记所有点。但是,如何突出显示(即颜色,大小变化)感兴趣的单个基因?(又名:如何确定我手头有10个基因的列表的数据点?或者如何在散点图上注释感兴趣的基因而又不注释所有其他点?)

我已经尝试过使用该subset函数,但是我在R的新手角色使我有些滞留。

sco*_*coa 5

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

让我们模拟一个data.frame:

df <- data.frame(genes=letters,
                 A=runif(26),
                 B=runif(26))
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

在此处输入图片说明

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

在此处输入图片说明