【问题标题】:label specific point in ggplot2在ggplot2中标记特定点
【发布时间】:2015-12-14 22:14:09
【问题描述】:

我正在尝试在 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 的新手角色让我有点束手无策。

【问题讨论】:

标签: r ggplot2 labels


【解决方案1】:

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

让我们模拟一个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)

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

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    相关资源
    最近更新 更多