删除使用 plotmath 制作的 ggrepel 标签之间的 space
removing space between ggrepel label made using plotmath
我正在创建一个要使用 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)
由 reprex package (v0.2.1)
创建于 2018-11-17
我的问题是如何去掉这两个组件之间的 space。虽然我在 paste()
函数中指定了 sep = ""
,但我不想要的两个组件之间仍然有额外的 space(例如,setosa, 50
、versicolor, 50
、 virginica, 50
标签应改为 setosa,50
、versicolor,50
、virginica,50
).
下面是您的代码的更新版本,它实现了一种在物种名称和样本大小之间放置逗号(没有后继 space)的方法。例如,您的标签看起来像 "~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)
产生以下情节:
希望对您有所帮助。
我正在创建一个要使用 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)
由 reprex package (v0.2.1)
创建于 2018-11-17我的问题是如何去掉这两个组件之间的 space。虽然我在 paste()
函数中指定了 sep = ""
,但我不想要的两个组件之间仍然有额外的 space(例如,setosa, 50
、versicolor, 50
、 virginica, 50
标签应改为 setosa,50
、versicolor,50
、virginica,50
).
下面是您的代码的更新版本,它实现了一种在物种名称和样本大小之间放置逗号(没有后继 space)的方法。例如,您的标签看起来像 "~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)
产生以下情节:
希望对您有所帮助。