Удаление пробела между ярлыком ggrepel, выполненным с использованием плотмата
Я создаю график, на котором я хочу отображать метки, используя 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)
Создано в 2018-11-17 пакетом представлением (v0.2.1)
Мой вопрос заключается в том, как мне избавиться от пространства между этими двумя компонентами. Хотя я уточнил sep = ""
в paste()
функция, есть еще дополнительное пространство между двумя компонентами, которые я не хочу (например, setosa, 50
, versicolor, 50
, virginica, 50
метки должны быть вместо setosa,50
, versicolor,50
, virginica,50
).
1 ответ
Ниже приведена обновленная версия вашего кода, в которой реализован способ поместить запятую (без последующего пробела) между именем вида и размером выборки. Вы ярлыки, например, будете выглядеть "~setosa*\",\"*50"
вместо list(~setosa,50)
(df <- iris %>%
dplyr::group_by(Species) %>%
dplyr::summarise(n = n(), mean = mean(Sepal.Length)) %>%
purrrlyr::by_row(
.d = .,
..f = ~ paste("~",
.$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 "~setosa*\",\"*50"
#> 2 versicolor 50 5.94 "~versicolor*\",\"*50"
#> 3 virginica 50 6.59 "~virginica*\",\"*50"
# displaying labels
ggplot(iris, aes(Species, Sepal.Length)) +
geom_point() +
stat_smooth(method="lm",size=0.6,se=FALSE,colour="black")+
ggrepel::geom_label_repel(data = df,
aes(x = Species, y = mean, label = label),
parse = TRUE)
Который производит следующий сюжет:
Надеюсь, поможет.