我有一些y轴标签,我想拥有相同的间距。标签由2个变量组成,我希望将正确的间距放在左边的变量左对齐,右边的变量是右对齐。我认为这是一个微不足道的任务,实际上在data.frame中这样做很容易使用 stringi 包中的字符串填充函数。但是,该图没有所需的对齐方式。
library(stringi)
library(tidyverse)
paster <- function(x, y, fill = ' '){
nx <- max(nchar(x))
ny <- max(nchar(y))
paste0(
stringi::stri_pad_right(x, nx, fill),
stringi::stri_pad_left(y, ny, fill)
)
}
plot_dat <- mtcars %>%
group_by(gear) %>%
summarize(
n = n(),
drat = mean(drat)
) %>%
mutate(
gear = case_when(
gear == 3 ~ 'three and free',
gear == 4 ~ 'four or more',
TRUE ~ 'five'
),
label = paster(gear, paste0(' (', n, ')'))
)
plot_dat
## # A tibble: 3 x 4
## gear n drat label
## <chr> <int> <dbl> <chr>
## 1 three and free 15 3.132667 three and free (15)
## 2 four or more 12 4.043333 four or more (12)
## 3 five 5 3.916000 five (5)
plot_dat %>%
ggplot(aes(x = drat, y = label)) +
geom_point()
给出:
我想要的是: