如何更改或交换R中堆积条形图的颜色?

时间:2016-06-22 12:38:48

标签: r colors bar-chart swap stacked-chart

我有一个像这样的矩阵:

my.matrix:

       A    B    C     D     E     F    G     H
[1,] 12.1 8.10 7.79 11.40 10.30 15.10 9.88 13.90
[2,]  0.0 5.45 0.00  0.00  0.00  0.00 0.00  0.00
[3,]  0.0 0.00 5.42  0.00  0.00  0.00 0.00  0.00
[4,]  0.0 0.00 0.00  6.55  0.00  0.00 0.00  0.00
[5,]  0.0 0.00 0.00  0.00  4.68  0.00 0.00  0.00
[6,]  0.0 0.00 0.00  0.00  0.00  4.55 0.00  0.00
[7,]  0.0 0.00 0.00  0.00  0.00  0.00 4.32  0.00
[8,]  0.0 0.00 0.00  0.00  0.00  0.00 0.00  3.94

我已经制作了一个条形图:

barplot((my.matrix), beside=F, axis.lty=1, xpd=T,
        ylim= c(0,30),xlim=c(0,11), horiz=F,yaxt='n',
        axisnames=F, 
        col=c("black","darkolivegreen1","steelblue2","hotpink3","lightpink","gold","darkslategray1","peachpuff"))

这是情节:

enter image description here

所以,我想要的是将第二列中各列的颜色交换到最后一列。

例如,在第2列上,您可以看到黑色顶部的绿色; 但是我希望黑色和绿色相同,而其他列则相同,而我保持矩阵的顺序相同。

以下是我在前三栏中使用p​​hotoshop着色的示例:

enter image description here

我试图反转或转置矩阵,但它不起作用,我有点卡在这一部分。

如果你能解决这个问题我真的很感激!

最佳,

1 个答案:

答案 0 :(得分:1)

你可以做到

barplot(my.matrix[nrow(my.matrix):1, ], beside=F, axis.lty=1, xpd=T,
        ylim= c(0,30),xlim=c(0,11), horiz=F,yaxt='n',
        axisnames=F, 
        col=c("peachpuff", "darkslategray1", "gold", "lightpink", "hotpink3", 
              "steelblue2", "darkolivegreen1", "black"))

enter image description here

或者,关于你的编辑:

m <- my.matrix
diag(m) <- my.matrix[1, ]
m[1, ] <- diag(my.matrix)
barplot(m[nrow(m):1, ], beside=F, axis.lty=1, xpd=T,
        ylim= c(0,30),xlim=c(0,11), horiz=F,yaxt='n',
        axisnames=F, 
        col=c("peachpuff", "darkslategray1", "gold", "lightpink", "hotpink3", 
              "steelblue2", "darkolivegreen1", "black"))

enter image description here

数据:

my.matrix <- read.table(header=T, text="      A    B    C     D     E     F    G     H
[1,] 12.1 8.10 7.79 11.40 10.30 15.10 9.88 13.90
[2,]  0.0 5.45 0.00  0.00  0.00  0.00 0.00  0.00
[3,]  0.0 0.00 5.42  0.00  0.00  0.00 0.00  0.00
[4,]  0.0 0.00 0.00  6.55  0.00  0.00 0.00  0.00
[5,]  0.0 0.00 0.00  0.00  4.68  0.00 0.00  0.00
[6,]  0.0 0.00 0.00  0.00  0.00  4.55 0.00  0.00
[7,]  0.0 0.00 0.00  0.00  0.00  0.00 4.32  0.00
[8,]  0.0 0.00 0.00  0.00  0.00  0.00 0.00  3.94")
my.matrix <- as.matrix(my.matrix)