How to pass aes parameters of ggplot to function

后端 未结 1 811
广开言路
广开言路 2020-12-19 16:59

I am using gapminder and trying to write a simple function showing graphs of lifeExp against gdpPercap. However, when I put the arguments in the fu

相关标签:
1条回答
  • 2020-12-19 17:18

    You need to use tidy evaluation inside aes(). Either .data[[ ]] or {{ }} (curly curly) would work. See also this answer and Tidy evaluation section in Hadley Wickham's Advanced R book.

    library(gapminder)
    library(rlang)
    library(ggplot2)
    
    plotting <- function(input, xx, yy) {
      ggplot(input, aes(.data[[xx]], .data[[yy]], size = pop, color = country)) +
        geom_point(show.legend = FALSE)
    }
    
    plotting(gapminder, "lifeExp", "gdpPercap")
    

    plotting2 <- function(input, xx, yy) {
      ggplot(input, aes({{xx}}, {{yy}}, size = pop, color = country)) +
        geom_point(show.legend = FALSE)
    }
    
    plotting2(gapminder, lifeExp, gdpPercap)
    

    Created on 2019-11-09 by the reprex package (v0.3.0)

    0 讨论(0)
提交回复
热议问题