首页 > 解决方案 > lapply + ggplot 无法填充我的箱线图。(箱线图中没有颜色填充)

问题描述

今天我正在处理一个包含 26 个数字变量的数据集,我想看看我是否可以为我的每个班级组在我的数据集中的列中为我的每个变量提取一些数据以获得箱线图。

所以,首先我创建了一个例子来看看它是否有效:

ggplot(dford, aes(y= c(let.7g.5p), x=clase, fill=clase)) +
  geom_boxplot() +
  scale_fill_manual(values = c("white", "red", "pink", "blue", "lightblue"))

一切都很完美。我按班级获得了箱线图,并带有颜色,因此我可以更好地区分我的班级。刚刚好

但是当我尝试创建一个函数以便我可以输入列名列表以便我可以自动化它时,我让它工作,但它不应用任何颜色。我得到了我的箱线图,具有相同的数据,但只是纯白色。

varlist <- names_mirna

customPlot <- function(varName) {

  ggplot(dford, aes_string(dford$clase,varName), fill=dford$clase) + 
    ## Fill doesn't seem to work. My X in aes does.
      geom_boxplot()
      scale_fill_manual(values = c("white", "red", "pink", "blue", "lightblue"))

 ## Not working also.
}

lapply(varlist, customPlot)

我的代码有问题吗?我不明白为什么它不起作用。

标签: rggplot2lapplyboxplot

解决方案


您必须在aes_string. 以mtcars示例为例,试试这个:

library(ggplot2)

varlist <- c("mpg", "hp")

mtcars$cyl <- factor(mtcars$cyl)

customPlot <- function(varName) {

  ggplot(mtcars, aes_string("cyl", varName, fill = "cyl")) +
    geom_boxplot() 

}
lapply(varlist, customPlot)
#> [[1]]

#> 
#> [[2]]

reprex 包(v0.3.0)于 2020 年 3 月 22 日创建


推荐阅读