R语言 通过移动点并使用箭头指向其位置来处理过绘

vcudknz3  于 2023-04-09  发布在  其他
关注(0)|答案(1)|浏览(129)

这个问题与this post有关,但不同。
我不想使用alpha、颜色或形状,而想使用类似于ggrepel的东西。代替文本标签,点将从其原始位置移开,箭头或线段将指向点的原始位置。
例如,在@Claus-Wilke的这个图中:

ggplot(mpg, aes(displ, cty, colour = drv, fill = drv)) +
  geom_point(position=position_jitter(h=0.1, w=0.1),
             shape = 21, alpha = 0.5, size = 3) +
  scale_color_manual(values=linecolors) +
  scale_fill_manual(values=fillcolors) +
  theme_bw()

而不是抖动,重叠的点将相互排斥,箭头/段将从点开始,并在点的原始位置结束。这将非常忙碌,有很多重叠,但如果只有几个可以忍受。有什么建议吗?
谢谢!

2w2cym1i

2w2cym1i1#

这是我使用ggrepel::geom_label_repel()所能得到的最接近的结果,尽管我不认为结果是有用的可视化,我自己也不会使用它。

library(ggplot2)
library(ggrepel)

linecolors <- c("#714C02", "#01587A", "#024E37")
fillcolors <- c("#9D6C06", "#077DAA", "#026D4E")

ggplot(mpg, aes(displ, cty, colour = drv, fill = drv)) +
  geom_label_repel(
    aes(label = " "), 
    size = 0.35,
    label.r = 0.25, 
    alpha = 0.5, 
    max.overlaps = Inf, 
    min.segment.length = 0,
    force = 5,
    seed = 13
  ) +
  scale_color_manual(values=linecolors) +
  scale_fill_manual(values=fillcolors) +
  coord_cartesian(xlim = c(0, 8), ylim = c(0, 40)) +
  theme_bw()

相关问题