首页 > 解决方案 > aes_string() 内的缩放值

问题描述

我想通过在 ggplot 中乘以一个数字(比如 10)来缩放我的 y-var。问题是这是在一个闪亮的应用程序中,变量必须作为字符串传递,即input$variable.

如何以aes_string()与我相同的方式乘以其中一个变量aes()?这是失败时的示例:

 library(ggplot2)
 ggplot(data = subset(mtcars, cyl == 4), aes_string(x = "wt", y = "mpg")) + 
      geom_line(size = 1.5, color = "#00868B") + 
      geom_line(data = subset(mtcars, cyl == 8), aes_string(x = "wt", y = "mpg" * 10))

“mpg”* 10 中的错误:二进制运算符的非数字参数

标签: rggplot2nsetidyeval

解决方案


我更喜欢使用get而不是在aes_string内部调用变量ggplot2,它适用于值修改,例如:

library(ggplot2)
X <- "wt"
Y <- "mpg"
ggplot(subset(mtcars, cyl == 4), aes(get(X), get(Y))) + 
    geom_line() + 
    geom_line(data = subset(mtcars, cyl == 8), aes(y = get(Y) * 10)) +
    labs(x = X,
         y = Y)

在此处输入图像描述

PS:您不需要调用wtsecond aes,因为它与 first 中的“变量”相同aes


推荐阅读