Die*_*rto 1 r ggplot2 shiny shiny-reactivity
我\xc2\xb4m 新使用shiny 和I\xc2\xb4m 尝试制作ggplot。根据我所读到的内容,我必须使用aes_string代替aes(),但我仍在试图找出原因。
我的代码:
\noutput$scatterplot <- renderPlot({\n ggplot(data = movies, aes_string(x = input$x, y = input$y,\n color = input$z)) +\n geom_point(alpha = input$alpha)\n })\nRun Code Online (Sandbox Code Playgroud)\n
让我们以mtcars数据为例。
通常您可以ggplot2这样称呼:
library(ggplot2)
ggplot(data = mtcars, aes(x = mpg, y = disp,color = am)) + geom_point()
Run Code Online (Sandbox Code Playgroud)
请注意,您将mpg,disp和am作为裸列名称传递,而不是作为字符串传递。当您以闪亮的方式获取用户输入时,您会得到这些字符串。因此,如果您不使用aes_string您所调用的内容:
ggplot(data = mtcars, aes(x = "mpg", y = "disp",color = "am")) + geom_point()
Run Code Online (Sandbox Code Playgroud)
这不是你想要的。因此,通过使用aes_string您“告诉”R/Shiny,我将列名称作为字符串传递,但将它们视为数据帧中的列而不是字符串。
另请注意,它aes_string已被软弃用,建议使用.data@Phil 提到的整洁评估。
ggplot(data = mtcars,
aes(x = .data[["mpg"]], y = .data[["disp"]],color = .data[["am"]])) +
geom_point()
Run Code Online (Sandbox Code Playgroud)
其他选项包括:
sym和!!:ggplot(data = mtcars,
aes(x = !!sym("mpg"), y = !!sym("disp"),color = !!sym("am"))) +
geom_point()
Run Code Online (Sandbox Code Playgroud)
get:ggplot(data = mtcars,
aes(x = get("mpg"), y = get("disp"),color = get("am"))) +
geom_point()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1015 次 |
| 最近记录: |