在ggplot中将表达式与函数结合起来
Combine expression with function in ggplot
我想制作一个 ggplot 函数,它允许我选择数据集、x 轴和 y 轴上的数据以及作为表达式的 y 轴标签,但我无法获取 y 轴表达式成为函数的一部分。
这是我目前的情况:
x_vs_time <- function (data, xaxis, yaxis, yaxislabel) {
ggplot(data, aes(x = {{xaxis}},
y= {{yaxis}}))+
geom_point(size =3, alpha =0.5)+
ylab (expression(yaxislabel))
}
x_vs_time (alldata, daycount, nutrient_concentration, NO[3]~(mu*M))
当我 运行 函数时,y 轴标签在函数中显示为变量名称,“yaxislabel”,我一直无法修复它。
我可以将其作为普通标签包含在内,但我有多个表达式想包含在多个图中,例如:
- ylab (表达式 (Si:NO3~drawdown))
- ylab(表达式(NO[3]~(mu*M)))
- ylab(表达式(Cells~L^-1))
- 等等
有谁知道如何在函数中包含 y 轴标签表达式?
使用 substitute
而不是 expression
。当您使用 expression
时,它会捕获括号内的文字名称,而 substitute
将为您提供传递给函数的实际参数。
x_vs_time <- function (data, xaxis, yaxis, yaxislabel) {
ggplot(data, aes(x = {{xaxis}}, y = {{yaxis}})) +
geom_point(size = 3, alpha = 0.5) +
ylab(substitute(yaxislabel))
}
显然,我们没有您的数据,但我们可以使用 built-in iris
数据集看到它的工作原理:
x_vs_time(iris, Sepal.Length, Sepal.Width, NO[3])
或使用 mtcars
的不同表达式
x_vs_time(mtcars, wt, mpg, Si:NO[3]~drawdown)
我想制作一个 ggplot 函数,它允许我选择数据集、x 轴和 y 轴上的数据以及作为表达式的 y 轴标签,但我无法获取 y 轴表达式成为函数的一部分。
这是我目前的情况:
x_vs_time <- function (data, xaxis, yaxis, yaxislabel) {
ggplot(data, aes(x = {{xaxis}},
y= {{yaxis}}))+
geom_point(size =3, alpha =0.5)+
ylab (expression(yaxislabel))
}
x_vs_time (alldata, daycount, nutrient_concentration, NO[3]~(mu*M))
当我 运行 函数时,y 轴标签在函数中显示为变量名称,“yaxislabel”,我一直无法修复它。 我可以将其作为普通标签包含在内,但我有多个表达式想包含在多个图中,例如:
- ylab (表达式 (Si:NO3~drawdown))
- ylab(表达式(NO[3]~(mu*M)))
- ylab(表达式(Cells~L^-1))
- 等等
有谁知道如何在函数中包含 y 轴标签表达式?
使用 substitute
而不是 expression
。当您使用 expression
时,它会捕获括号内的文字名称,而 substitute
将为您提供传递给函数的实际参数。
x_vs_time <- function (data, xaxis, yaxis, yaxislabel) {
ggplot(data, aes(x = {{xaxis}}, y = {{yaxis}})) +
geom_point(size = 3, alpha = 0.5) +
ylab(substitute(yaxislabel))
}
显然,我们没有您的数据,但我们可以使用 built-in iris
数据集看到它的工作原理:
x_vs_time(iris, Sepal.Length, Sepal.Width, NO[3])
或使用 mtcars
x_vs_time(mtcars, wt, mpg, Si:NO[3]~drawdown)