lapply + ggplot не может заполнить мой boxplot. (Нет цветовой заливки на боксплоте) - PullRequest
1 голос
/ 22 марта 2020

Сегодня я работал над набором данных с 26 числовыми c переменными, и я хотел посмотреть, смогу ли я создать некоторые данные, чтобы получить блок-график для каждой из моих групп классов, в столбце в моем наборе данных, для каждой из моих переменные.

Итак, сначала я создал пример, чтобы увидеть, работает ли он:

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

И все было идеально. Я получил свой блокпост по классам, с цветом, чтобы я мог различать guish лучше моих классов. Просто идеально

Но когда я пытаюсь создать функцию, чтобы я мог ввести список имен моих столбцов, чтобы я мог автоматизировать его, я заставил его работать, но это не применяется любой цвет. Я получил свои ящики с теми же данными, но просто белым.

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 Ответ

2 голосов
/ 22 марта 2020

Вы должны включить отображение в заливку эстетики c в 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]]

Создано в 2020-03-22 Представить пакет (v0.3.0)

...