【问题标题】:How can I make a start on this ggplot question?我该如何开始这个 ggplot 问题?
【发布时间】:2020-11-12 23:31:47
【问题描述】:

写一个函数chartCol(df, colN),其中:

  • df:一个选定的数据帧(例如 mpg、diamonds 或 msleep)
  • colN:一个选定列的名称(这应该是一个字符串,例如“displ”)

此函数将根据所选列的数据类型返回一个绘图(直方图/条形图)。如果它是一个连续变量,它将显示一个直方图。如果是分类变量,则会显示条形图。

提示:映射时使用aes_string处理字符串名称。

我正在使用以下功能:

chartCol <- function(df,colN) {
  ggplot(df) + geom_bar(aes_string(colN))
  
}

但是,这只会返回一个条形图,当我在此函数中编写该代码时,我无法获得直方图。

【问题讨论】:

    标签: r function ggplot2 bar-chart histogram


    【解决方案1】:

    我会让你的老师知道 aes_string 已被软弃用,最好这样做:

    library(ggplot2)
    
    chartCol <- function(df, colN) {
      ggplot(df, aes(x = !!ensym(colN))) +
      if(!is.numeric(df[colN])) geom_bar() else geom_histogram()
    }
    
    chartCol(diamonds, "carat")
    

    chartCol(diamonds, "cut")
    

    reprex package (v0.3.0) 于 2020 年 11 月 12 日创建

    【讨论】:

    • 另一种方法是使用 .data[[]] 代词:aes(x = .data[[colN]])
    猜你喜欢
    • 1970-01-01
    • 2011-07-28
    • 2020-03-25
    • 2020-02-14
    • 2021-10-23
    • 1970-01-01
    相关资源
    最近更新 更多