我正在开发一个闪亮的应用程序,用户可以选择使用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)))
非常感谢任何见解!
答案 0 :(得分:4)
如果您使用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
函数,您已经完成的工作可能是最佳方法。