7

在下面的示例中,是否有一种可能的解决方法来左对齐由geom_label_repel(或geom_text_repel)创建的文本标签,其中所有文本都以正值放置,并且在参数nudge_x中仅调整了 y 位置?direction目前,默认行为是居中对齐文本:

library(ggplot2)
library(ggrepel)

ggplot(mtcars, aes(x=factor(gear), y=mpg, colour=factor(gear))) + 
  geom_point(size=3) + 
  facet_wrap(~cyl, labeller=label_both) + 
  scale_x_discrete(expand=c(0, 1.5)) + 
  geom_label_repel(aes(label=rownames(mtcars)), 
               size=3, segment.size=0.25, nudge_x=0.5, direction="y")

在此处输入图像描述

我希望通过如下例所示的设置来模拟geom_label(或geom_text)中可能的左对齐hjust=0,同时能够自动排斥 y 方向的标签:

ggplot(mtcars, aes(x=factor(gear), y=mpg, colour=factor(gear))) + 
  geom_point(size=3) + 
  facet_wrap(~cyl, labeller=label_both) +
  scale_x_discrete(expand=c(0, 1.5)) + 
  geom_label(aes(label=rownames(mtcars)), size=3, nudge_x=0.2, hjust=0)

在此处输入图像描述

编辑:作为一个黑客,是否可以将 hjust(和 vjust)构建到 ggrepel 中?

4

1 回答 1

1

自 OP 发布此问题以来的 4 年中,hjust=似乎已将其添加到ggrepel包中:

library(ggplot2)
library(ggrepel)

ggplot(mtcars, aes(x=factor(gear), y=mpg, colour=factor(gear))) + 
  geom_point(size=3) + 
  facet_wrap(~cyl, labeller=label_both) + 
  scale_x_discrete(expand=c(0, 1.5)) + 
  geom_label_repel(
    aes(label=rownames(mtcars)), hjust=0,
    size=3, segment.size=0.25, nudge_x=0.5, direction="y")

在此处输入图像描述

于 2022-01-23T14:59:40.700 回答