今天,我正在处理具有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)
我的代码有问题吗?我不明白为什么它不起作用。
答案 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创建