用 R 中相应变量的名称标记 x 轴和 y 轴
Labelling x- and y-axis by the corresponding variable's name in R
起初这听起来像是一个非常微不足道的问题,但到目前为止还没有人设法帮助我,因此我向大家伸出援手。
我想做以下事情:
我正在编写一个简单的函数,允许我绘制两个变量的对比图,第三个变量为观察点着色(取决于颜色变量的相应值)。代码如下所示:
scatterplot <- function(data_used, x.variable, y.variable, color.variable) {
ggplot(data_used, aes(x=x.variable, y = y.variable)) +
geom_point(aes_string(color = color.variable))
}
scatterplot(data_used = example_data, x.variable = example_data$education,
y.variable = example_data$wages,
color.variable = example_data$sex)
我现在想让 R 做的是用我决定绘制的相应变量的名称(分别)标记 x 轴和 y 轴。在此示例中,x 轴为 'education',y 轴为 'wages'.
我试着简单地输入 + labs (x = x.variable, y = y.variable)
但它不起作用(这样做时,R 用变量值标记轴!)。默认情况下,R 仅将轴命名为“x.variable”和“y.variable”。
有人可以帮助我实现我想要做的事情吗?
此致,
xifrix
事后看来,我不确定准引用的内容是否 100% 必要,但这是我用于类似需求的模式:
my_scatterplot <- function(data, x, y){
.x = rlang::enquo(x)
.y = rlang::enquo(y)
data %>%
ggplot(aes(x = x, y = y))+
geom_point()+
labs(x = .x,
y = .y)
}
如果它对您不起作用,请告诉我,但应该可以。编辑:应该在 DaveArmstrong 的回答之后添加,该函数将在不带 x / y 变量引号的情况下调用,例如
diamonds %>% my_scatterplot(price, table)
jpenzer 的回答很好。这里没有准引用的东西。
scatterplot <- function(data_used, x.variable, y.variable, color.variable) {
ggplot(data_used, aes_string(x=x.variable, y = y.variable)) +
geom_point(aes_string(color = color.variable)) +
labs(x=x.variable, y=y.variable, colour=color.variable)
}
mtcars %>%
mutate(am = as.factor(am)) %>%
scatterplot(., x.variable = "hp",
y.variable = "mpg",
color.variable = "am")
要在函数中传递列名,您可以在函数体中的所需列名周围使用双花括号 {{...}}
:
library(dplyr)
library(ggplot2)
scatterplot <- function(data_used, x.variable, y.variable, color.variable) {
ggplot(data_used, aes_string({{x.variable}}, {{y.variable}})) +
geom_point(aes_string(color = {{color.variable}})) +
labs(x=x.variable, y=y.variable, colour=color.variable)
}
scatterplot(mtcars %>% mutate(am = as.factor(am)), x.variable = "mpg",
y.variable = "hp",
color.variable = "am")
起初这听起来像是一个非常微不足道的问题,但到目前为止还没有人设法帮助我,因此我向大家伸出援手。
我想做以下事情:
我正在编写一个简单的函数,允许我绘制两个变量的对比图,第三个变量为观察点着色(取决于颜色变量的相应值)。代码如下所示:
scatterplot <- function(data_used, x.variable, y.variable, color.variable) {
ggplot(data_used, aes(x=x.variable, y = y.variable)) +
geom_point(aes_string(color = color.variable))
}
scatterplot(data_used = example_data, x.variable = example_data$education,
y.variable = example_data$wages,
color.variable = example_data$sex)
我现在想让 R 做的是用我决定绘制的相应变量的名称(分别)标记 x 轴和 y 轴。在此示例中,x 轴为 'education',y 轴为 'wages'.
我试着简单地输入 + labs (x = x.variable, y = y.variable)
但它不起作用(这样做时,R 用变量值标记轴!)。默认情况下,R 仅将轴命名为“x.variable”和“y.variable”。
有人可以帮助我实现我想要做的事情吗?
此致,
xifrix
事后看来,我不确定准引用的内容是否 100% 必要,但这是我用于类似需求的模式:
my_scatterplot <- function(data, x, y){
.x = rlang::enquo(x)
.y = rlang::enquo(y)
data %>%
ggplot(aes(x = x, y = y))+
geom_point()+
labs(x = .x,
y = .y)
}
如果它对您不起作用,请告诉我,但应该可以。编辑:应该在 DaveArmstrong 的回答之后添加,该函数将在不带 x / y 变量引号的情况下调用,例如
diamonds %>% my_scatterplot(price, table)
jpenzer 的回答很好。这里没有准引用的东西。
scatterplot <- function(data_used, x.variable, y.variable, color.variable) {
ggplot(data_used, aes_string(x=x.variable, y = y.variable)) +
geom_point(aes_string(color = color.variable)) +
labs(x=x.variable, y=y.variable, colour=color.variable)
}
mtcars %>%
mutate(am = as.factor(am)) %>%
scatterplot(., x.variable = "hp",
y.variable = "mpg",
color.variable = "am")
要在函数中传递列名,您可以在函数体中的所需列名周围使用双花括号 {{...}}
:
library(dplyr)
library(ggplot2)
scatterplot <- function(data_used, x.variable, y.variable, color.variable) {
ggplot(data_used, aes_string({{x.variable}}, {{y.variable}})) +
geom_point(aes_string(color = {{color.variable}})) +
labs(x=x.variable, y=y.variable, colour=color.variable)
}
scatterplot(mtcars %>% mutate(am = as.factor(am)), x.variable = "mpg",
y.variable = "hp",
color.variable = "am")