【问题标题】:How to change or swap the color for a stacked bar plot in R?如何更改或交换 R 中堆积条形图的颜色?
【发布时间】:2016-10-24 09:50:15
【问题描述】:

我有一个这样的矩阵:

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"))

这是情节:

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

例如,在第 2 列中,您可以在黑色顶部看到绿色; 但我希望在保持矩阵顺序相同的同时,将黑色置于绿色之上,其余列也相同。

这是我用 Photoshop 为前三列着色的示例:

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

如果您能帮我解决这个问题,我将不胜感激!

最好的,

【问题讨论】:

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


    【解决方案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"))
    

    或者,关于您的编辑:

    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"))
    


    数据:

    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)
    

    【讨论】:

    • 不幸的是,这不是我想要的;你的结果我也是通过反转矩阵得到的。我在前三列的问题中添加了一张新图片。谢谢
    • 那么,实际上你想用第一行切换对角线?查看我的编辑
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-29
    • 1970-01-01
    • 2015-07-08
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    相关资源
    最近更新 更多