如何用ggplot2标记boxplot的异常值?

use*_*728 1 label r ggplot2

我的数据如下:

genes   fc   type
349028  -1.2 pro
2454    1.1  pro
24908   0.4  pro
4730    0.8  pro
94988   0.9  pro
9865    6    pro
8935    3.4  phos
39280   1.2  phos
8034    -0.3 phos
3953    1.1  phos
4732    2.1  phos
Run Code Online (Sandbox Code Playgroud)

我想用 ggplot2 标记 boxplot 的异常值并用“抖动”绘制所有点,但异常值出现两次。我的代码如下:

genes   fc   type
349028  -1.2 pro
2454    1.1  pro
24908   0.4  pro
4730    0.8  pro
94988   0.9  pro
9865    6    pro
8935    3.4  phos
39280   1.2  phos
8034    -0.3 phos
3953    1.1  phos
4732    2.1  phos
Run Code Online (Sandbox Code Playgroud)

我得到了图:在此处输入图片说明

如果我添加outlier.size=-1geom_boxplot(),我会得到: 在此处输入图片说明

但是标签并没有接近所代表的点。有人能告诉我如何调整我的代码吗?谢谢!

Rom*_*man 5

您可以尝试使用ggbeeswarmfor 点和ggrepel漂亮的标签。值得注意的是,使用从箱线图删除异常值outlier.colour = NA和子集的数据geom_text_repel

d %>% 
  group_by(type) %>%
  mutate(outlier=ifelse(is_outlier(fc),genes,as.numeric(NA))) %>%
  ggplot(aes(x=factor(type), fc)) + 
    geom_boxplot(outlier.colour = NA) +
    ggbeeswarm::geom_beeswarm(aes(color=fc)) +
    ggrepel::geom_text_repel(data=. %>% filter(!is.na(outlier)), aes(label=genes)) +
    scale_colour_gradient(low="blue",high="red")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明