【问题标题】:Using lapply to make boxplots of a variable list使用 lapply 制作变量列表的箱线图
【发布时间】:2023-04-04 07:42:01
【问题描述】:

我希望数据集中的几个 y 变量使用这种类型的箱线图:normal boxplot for all irises with Species as x-value。由于我要绘制多个 y 变量,因此我尝试像这样使用 lapply:

varlist <- c('Sepal.Length', 'Sepal.Width')

plot <- function (varlist) {
  require(ggplot2)
  ggplot(data = iris, aes(x=Species, y=varlist))+
    geom_boxplot() 
}

lapply(varlist, FUN = plot)

我得到了这个情节: with only one iris per plot

如何使用一种循环(因为有多个 y 值)获得正常的箱线图,以及按 x 变量分组的所有虹膜都包含在框中的位置?

【问题讨论】:

    标签: r ggplot2 lapply


    【解决方案1】:

    使用dplyr,您可以这样做:

    library("ggplot2")
    library("dplyr")
    
    
    varlist <- c('Sepal.Length', 'Sepal.Width')
    
    customPlot <- function(varName) {
    
    iris %>% 
    group_by_("Species") %>% 
    select_("Species",varName) %>% 
    ggplot(aes_string("Species",varName)) + geom_boxplot()
    
    }
    lapply(varlist,customPlot)
    

    情节:

    另请注意,plot 是用于一般绘图的基本函数。用用户定义的函数覆盖基本函数是不安全的,因为这可能会导致以后出现意外结果。

    【讨论】:

      【解决方案2】:

      IIRC,aes() 不处理字符串输入;你需要aes_string()。如果您将ggplot() 调用更改为ggplot(data = iris, mapping = aes_string(x = 'Species', y = varlist)),我希望(但尚未测试)您的功能将起作用。

      【讨论】:

        猜你喜欢
        • 2011-12-16
        • 1970-01-01
        • 2017-05-05
        • 1970-01-01
        • 1970-01-01
        • 2021-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多