【发布时间】:2017-01-27 13:50:36
【问题描述】:
有没有办法在 R 中使用 apply 函数来创建带有 ggplot2 的条形图?
比如说,我们有一个数据框,其中仅包含因子变量,其中一个是布尔变量。就我而言,我有一个带有 +40 个变量的日期框。可以用一行代码绘制所有变量与布尔变量吗?
data("diamonds")
factors <- sapply(diamonds, function(x) is.factor(x))
factors_only <- diamonds[,factors]
factors_only$binary <- sample(c(1, 0), length(factors_only), replace=TRUE)
factors_only$binary <- as.factor(factors_only$binary)
但我想创建这样的条形图:
qplot(factors_only$color, data=factors_only, geom="bar", fill=factors_only$binary)
这不起作用:
sapply(factors_only,function(x) qplot(x, data=factors_only, geom="bar", fill=binary))
请指教
【问题讨论】:
-
你可以重塑你的数据,并使用
facet_:m = reshape2::melt(factors_only, id="binary") ; ggplot(m, aes(value, fill=binary)) + geom_bar() + facet_grid(. ~ variable, scale="free_x")(但你需要在m$value上使用factor重新排列你的条形图:也许沿着这些思路:aes(factor(value, levels=unlist(lapply(factors_only, levels))), fill=binary))