Я создаю график, на котором я хочу отображать метки, используя ggrepel
. Ниже я показываю минимальный пример, который показывает, как этикетка состоит из двух компонентов, разделенных запятой: первый относится к типу цветов ириса, а второй - к размеру выборки для этой группы.
# needed libraries
set.seed(123)
library(ggrepel)
# creating a dataframe with label column
(df <- iris %>%
dplyr::group_by(Species) %>%
dplyr::summarise(n = n(), mean = mean(Sepal.Length)) %>%
purrrlyr::by_row(
.d = .,
..f = ~ paste("list(~",
.$Species,
",",
.$n,
")",
sep = ""),
.collate = "rows",
.to = "label",
.labels = TRUE
))
#> # A tibble: 3 x 4
#> Species n mean label
#> <fct> <int> <dbl> <chr>
#> 1 setosa 50 5.01 list(~setosa,50)
#> 2 versicolor 50 5.94 list(~versicolor,50)
#> 3 virginica 50 6.59 list(~virginica,50)
# displaying labels
ggplot(iris, aes(Species, Sepal.Length)) +
geom_point() +
ggrepel::geom_label_repel(data = df,
aes(x = Species, y = mean, label = label),
parse = TRUE)
Создано 17 ноября 2018 г. пакетом REPEX (v0.2.1)
У меня вопрос, как избавиться от пространства между этими двумя компонентами. Хотя я указал sep = ""
в функции paste()
, между двумя компонентами все еще есть лишнее пространство, которое мне не нужно (например, метки setosa, 50
, versicolor, 50
, virginica, 50
должны быть setosa,50
, versicolor,50
, virginica,50
).
dplyr::mutate(label = paste0(Species, ",", n))
и удалитеparse = TRUE
изgeom_label_repel()
, вы не получите лишнего места. Я предполагаю, что у вас есть причины использовать код создания этикеток, который вы использовали в своем реальном сценарии использования, но я не думаю, что здесь он нужен. - person aosmith   schedule 20.11.2018