如何在ggplot2中组合排斥标签和阴影或光晕文本?

时间:2019-06-27 21:07:37

标签: r ggplot2 ggrepel

对于ggplot2中的标签(例如https://github.com/substack/js-traverse)或标签的阴影文本(例如ggrepelggshadowtext),有一些不错的解决方案。但是没有什么可以让我们结合这两个功能。

我尝试了这种可在标签略有不同的位置多次打印标签的黑客,但对于stretch来说效果不佳

geom_text_repel

这非常慢,并且在标签靠近的位置,此方法无效:

this answer

我们如何获得与library(ggplot2) # subset data d <- diamonds[1:20,] # make plot p <- ggplot(d, aes(carat, price)) + geom_point() # make halo layers theta <- seq(pi / 8, 2 * pi, length.out = 16) xo <- diff(range(d$carat)) / 200 yo <- diff(range(d$price)) / 200 for (i in theta) { p <- p + geom_text_repel(data = d, aes_q(x = bquote(carat + .(cos(i) * xo)), y = bquote(price + .(sin(i) * yo)), label = ~cut), size = 6, colour = 'black', seed = 1, segment.colour = NA) } # update plot with halo and interior text p <- p + geom_text_repel(aes(label = cut), size = 6, colour = 'white', seed = 1, segment.colour = "grey80") p 兼容的阴影文字?一段时间之前,我enter image description here向ggrepel GitHub存储库发送了此消息,但没有回复(也许不可能吗?)

1 个答案:

答案 0 :(得分:1)

此功能现已added已加入ggrepel软件包,真棒!

library(ggrepel)
library(ggplot2)

dat <- mtcars
dat$car <- rownames(dat)

ggplot(dat) +
  aes(wt, 
      mpg, 
      label = car) +
  geom_point(colour = "red") +
  geom_text_repel(bg.color = "white",
                  bg.r = 0.25)

enter image description here