0

我有一个基于矩阵的堆叠条形图,默认情况下,列形成条形图,行形成条形图的段。现在我想做的是为矩阵中的每个单元格分配堆叠条形图中的特定颜色和/或图案。也就是说,我不希望每一行在条形图中都有相同的颜色。这似乎是由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))
4

1 回答 1

1

首先,我调整了一个数据集,使其可用于 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

如果您想要使用可以使用的颜色(发现标志):

Q + scale_fill_manual(values=c("Blue", "White", "Red",
                               "Yellow","Red","Black",
                               "Darkgreen","White","Orange"))

我同意它可能看起来不那么漂亮,但我认为绘制这样的东西也相当罕见......

于 2013-03-04T14:03:17.360 回答