我有一个基于矩阵的堆叠条形图,其中列默认构成条形,行构成条形的分段。现在我要做的是在堆叠的柱状图中为矩阵中的每个单元格分配特定的颜色和/或图案。也就是说,我不希望条形图中的每一行都具有相同的颜色。这似乎是barplot()
的假设。这可能吗?怎么做?
示例(默认为矩阵的每行分配颜色):
barplot(matrix(c(1:12),ncol=3,nrow=4),col=c(1,2,3,4))
示例(我愚蠢的直觉解决方案不起作用):
barplot(matrix(c(1:12),ncol=3,nrow=4),col=matrix(c(1:12),ncol=3,nrow=4))
首先,我调整了数据集,使其可用于ggplot,因此它计算某个值出现的次数。还要注意的是,每个"因子"(1到3,4到6,7到9)的数字都要改变,否则它将无法工作:
Test1 <- sample(1:3,40,replace=T)
Test2 <- sample(4:6,60,replace=T)
Test3 <- sample(7:9,80,replace=T)
Test <- cbind(c(Test1,Test2,Test3),c(rep("A",40),rep("B",60),rep("C",80)))
Test <- as.data.frame(Test)
下一部分现在相当简单了:
require(ggplot2)
Q <- ggplot(Test, aes(V2, fill=as.factor(V1))) + geom_bar()
Q
如果你想用颜色来调节,你可以使用(spot the flags):
Q + scale_fill_manual(values=c("Blue", "White", "Red",
"Yellow","Red","Black",
"Darkgreen","White","Orange"))
我同意它可能看起来不那么漂亮,但我认为画这样的东西也是相当罕见的…