从函数调用的 ggplot 中的 EXPSS 标签
EXPSS labels in a ggplot called from a function
我正在努力将变量标签的使用(由 expss
包提供)结合到一个 ggplot2
图中,该函数来自我编写的重复多次的函数。
换句话说,以下代码按预期工作。
data(mtcars)
library(expss)
library(ggplot2)
mtcars <- apply_labels(mtcars,
mpg = "MPG",
cyl = "CYL",
wt = "WEIGHT")
use_labels(mtcars, {
# from the example of the package's vignette
ggplot(..data) +
geom_point(aes(y = mpg, x = wt))
})
如果我想写一个像
这样的函数
myplot <- function(x,y) {
ggplot(data=mtcars) +
geom_point(aes(y = {{y}}, x = {{x}}))
}
myplot(mpg, cyl)
myplot(mpg, wt)
这也适用。
但是如果我使用
myplot <- function(x,y) {
use_labels(data=mtcars, {
ggplot(..data) +
geom_point(aes(y = y, x = x))
})
}
myplot("mpg", "cyl")
这不再有效,即绘图不正确且标签未显示。
我试过了
myplot <- function(x,y) {
use_labels(data=mtcars, {
ggplot(data=mtcars) +
geom_point(aes(y = mtcars[[y]], x = mtcars[[x]]))
})
}
myplot("mpg", "cyl")
然后情节是正确的,但标签没有显示...
更简单的解决方案:ggeasy
包 (https://rdrr.io/cran/ggeasy/man/easy_labs.html)
以下完美运行:
myplot <- function(x,y) {
ggplot(data=mtcars) +
geom_point(aes(y = {{y}}, x = {{x}}))+
ggeasy::easy_labs(teach=TRUE)
}
myplot(mpg, cyl)
我正在努力将变量标签的使用(由 expss
包提供)结合到一个 ggplot2
图中,该函数来自我编写的重复多次的函数。
换句话说,以下代码按预期工作。
data(mtcars)
library(expss)
library(ggplot2)
mtcars <- apply_labels(mtcars,
mpg = "MPG",
cyl = "CYL",
wt = "WEIGHT")
use_labels(mtcars, {
# from the example of the package's vignette
ggplot(..data) +
geom_point(aes(y = mpg, x = wt))
})
如果我想写一个像
这样的函数myplot <- function(x,y) {
ggplot(data=mtcars) +
geom_point(aes(y = {{y}}, x = {{x}}))
}
myplot(mpg, cyl)
myplot(mpg, wt)
这也适用。
但是如果我使用
myplot <- function(x,y) {
use_labels(data=mtcars, {
ggplot(..data) +
geom_point(aes(y = y, x = x))
})
}
myplot("mpg", "cyl")
这不再有效,即绘图不正确且标签未显示。
我试过了
myplot <- function(x,y) {
use_labels(data=mtcars, {
ggplot(data=mtcars) +
geom_point(aes(y = mtcars[[y]], x = mtcars[[x]]))
})
}
myplot("mpg", "cyl")
然后情节是正确的,但标签没有显示...
更简单的解决方案:ggeasy
包 (https://rdrr.io/cran/ggeasy/man/easy_labs.html)
以下完美运行:
myplot <- function(x,y) {
ggplot(data=mtcars) +
geom_point(aes(y = {{y}}, x = {{x}}))+
ggeasy::easy_labs(teach=TRUE)
}
myplot(mpg, cyl)