This question already has answers here:
pass character strings to ggplot2 within a function
(2 个回答)
6年前关闭。
我正在开发一个 Shiny 的应用程序,用户可以在其中选择使用 ggplot2 绘制哪些变量,但是我完全不确定将字符串(要绘制的变量的名称)转换为合适的函数参数的最佳方法。
考虑以下非常人为的工作示例:
现在,如果我只有变量名称的字符串,我将如何告诉 ggplot 在 x 轴上绘制“gp”变量?
我提出了以下内容,但有没有更简单、更传统的方法?请注意我在 aes() 和 facet_wrap() 函数中使用的不同方法。
任何见解都非常感谢!
不幸的是,对于
(2 个回答)
6年前关闭。
我正在开发一个 Shiny 的应用程序,用户可以在其中选择使用 ggplot2 绘制哪些变量,但是我完全不确定将字符串(要绘制的变量的名称)转换为合适的函数参数的最佳方法。
考虑以下非常人为的工作示例:
df <- data.frame(gp = factor(rep(letters[1:3], each = 10)),
y = rnorm(30))
ggplot(df, aes(x = gp, y = y)) +
geom_point() + facet_wrap(~gp)
现在,如果我只有变量名称的字符串,我将如何告诉 ggplot 在 x 轴上绘制“gp”变量?
我提出了以下内容,但有没有更简单、更传统的方法?请注意我在 aes() 和 facet_wrap() 函数中使用的不同方法。
x.var <- "gp"
ggplot(df, aes(x=lol <- switch(x.var,"gp"=gp), y = y)) +
geom_point() + facet_wrap(as.formula(paste("~",x.var)))
任何见解都非常感谢!
最佳答案
如果您使用 aes_string
来指定 x
和 y
变量,而不是 x=lol <- switch(x.var,"gp"=gp)
,那就更好了,即使用以下内容:
ggplot(df, aes_string(x = x.var, y = 'y')) +
geom_point() + facet_wrap(as.formula(paste("~",x.var)))
不幸的是,对于
facet_wrap
函数,您已经完成的操作可能是最佳方式。关于r - 在 R/ggplot2 中将字符串转换为函数参数的最佳方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28429749/