小编Lan*_*dak的帖子

将 ggrepel / geom_text_repel 的标签移离使用 geom_vline() 和 geom_hline() 绘制的线

ggrepel提供了一系列出色的用于注释ggplot2图形的函数,示例页面包含许多关于如何扩展其功能的好提示,包括将生成的标签移离绘图的两个轴、其他标签等。

\n

然而,没有涵盖的一件事是将标签从使用geom_hline()和手动绘制的线中移开geom_vline(),例如在制作带注释的火山图时可能会发生这种情况。

\n

这是一个简单的 MWE 来强调这个问题:

\n
library("tidyverse")\nlibrary("ggrepel")\n\ndat <- subset(mtcars, wt > 2.75 & wt < 3.45)\ndat$car <- rownames(dat)\nggplot(dat, aes(wt, mpg, label = car)) +\n    geom_point(color = "red") +\n    geom_text_repel(seed = 1) + #Seed for reproducibility \n    geom_vline(xintercept = 3.216) + #Deliberately chosen "bad" numbers \n    geom_hline(yintercept = 19.64) + theme_bw()\n
Run Code Online (Sandbox Code Playgroud)\n

这会产生以下输出:文字上方划线

\n

请注意线条如何与标签文本重叠并使其模糊(是“Horret 4 Drive”还是“Hornet 4 Drive”?)

\n

事后稍微调整一下点,你可以做得更好 \xe2\x80\x93 我只是稍微移动了一些标签,让它们脱离了线。\n神奇固定

\n

是否有可能ggrepel自动执行此操作?我知道给出的例子并不完全稳定(其他种子给出了可接受的结果),但对于具有大量点的复杂图来说,这肯定是一个问题。

\n …

r ggplot2 ggrepel

3
推荐指数
1
解决办法
4947
查看次数

标签 统计

ggplot2 ×1

ggrepel ×1

r ×1