lapply + ggplot无法填充我的箱线图。 (箱图中没有颜色填充)

时间:2020-03-22 11:10:22

标签: r ggplot2 lapply boxplot

今天,我正在处理具有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)

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

1 个答案:

答案 0 :(得分:2)

您必须在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 package(v0.3.0)于2020-03-22创建