我正在编写一个自定义函数来创建一个带有附加到点的标签的散点图。这是相同的最小再现。
# needed libraries
library(tidyverse)
library(ggplot2)
library(ggrepel)
# custom function
label_adder <- function(data, x, y, label.var) {
# basic plot
plot <-
ggplot(data = data,
mapping = aes(
x = !!rlang::enquo(x),
y = !!rlang::enquo(y)
)) +
geom_point() +
geom_smooth(method = "lm")
# adding label
plot <-
plot +
geom_label_repel(mapping = aes(label = !!rlang::enquo(label.var)))
return(plot)
}
# creating dataframe
mtcars_new <- mtcars %>%
tibble::rownames_to_column(., var = "car") %>%
tibble::as_data_frame(x = .)
# using the function
label_adder(
data = mtcars_new,
x = wt,
y = mpg,
label.var = car
)
由reprex 包(v0.2.0.9000)于 2018 年 8 月 30 日创建。
问题
我似乎无法弄清楚如何使标签以变量x
的值为条件。y
例如,假设用户不想显示散点图中的所有点,而只显示带有(示例)的点:
wt > 5
wt < 4 & mpg < 20
wt > 4 | mpg > 25
等等
我可以在使用代码中进行哪些更改,geom_label_repel
以便评估rlang
用户提供的任何条件(涉及x
和/或y
),并且只有这些标签会显示在图中?