我的数据如下:
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=-1的geom_boxplot(),我会得到:

但是标签并没有接近所代表的点。有人能告诉我如何调整我的代码吗?谢谢!
您可以尝试使用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)