【问题标题】:R barplot - keep same colours after sortingR barplot - 排序后保持相同的颜色
【发布时间】:2015-09-10 18:41:53
【问题描述】:

我想一个接一个地绘制 3 个变量 (a,b,c) 的百分比。所以我有一个矩阵 (%) 用于变量 abc 的一组活动。

dta = structure(c(0.0073, 0.1467, 0.0111, 0.0294, 0.0451, 0.0031, 0.1823, 
        0.0452, 0.2212, 0.1123, 7e-04, 0.1138, 0.0723, 0.1649, 0.0634), 
        .Dim = c(5L, 3L), 
        .Dimnames = list(c("c Work", "e Travel/Commute", 
                           "f Cooking", "g Housework", "h Odd jobs"),
                         c("a", "b", "c")))

但是,我想对每个变量进行排序,但为一组活动保持相同的颜色。

所以这是活动的颜色。

library(RColorBrewer) 

rc = c(brewer.pal(n = 5, name = 'Set2'))  

kol = list()
kol$act <- c("c Work", "e Travel/Commute", "f Cooking", "g Housework", "h Odd jobs" )
kol$colours <- rc
kol = as.data.frame(kol)

               act colours
1           c Work #66C2A5
2 e Travel/Commute #FC8D62
3        f Cooking #8DA0CB
4      g Housework #E78AC3
5       h Odd jobs #A6D854

这是我的条形图

par(mfrow = c(2,2))
barplot(dta[,1], horiz = T, las = 2, col = kol$colours)
barplot(dta[,2], horiz = T, las = 2, col = kol$colours)
barplot(dta[,3], horiz = T, las = 2, col = kol$colours)

所以我想要的是按照活动的相同颜色进行排序

par(mfrow = c(2,2))
barplot(sort(dta[,1]), horiz = T, las = 2)
barplot(sort(dta[,2]), horiz = T, las = 2)
barplot(sort(dta[,3]), horiz = T, las = 2)

我怎样才能让它“匹配”?

【问题讨论】:

  • 尝试barplot(sort(dta[,1]), horiz = T, las = 2, col=kol$colours[match(names(sort(dta[,1])), kol$act)])(换句话说,要使其“匹配”,请尝试函数match ;-))
  • @CathG - 谢谢!我不确定如何正确使用match!你为什么不发布作为答案。
  • @CathG。谢谢非常有帮助
  • 不客气,很高兴我能帮上忙 :-)

标签: r sorting plot bar-chart


【解决方案1】:

您可以使用函数match 来匹配“实体”的名称和所需的颜色,例如,第一列:

kol$colours[match(names(sort(dta[,1])), kol$act)]

所以,要获得你的条形图,只需:

par(mfrow = c(2,2), mar=c(5, 8, 4, 1)) # also modifying the margins to make the names fit in
for (i in 1:3) {
    barplot(sort(dta[,i]), horiz = T, las = 2, col=kol$colours[match(names(sort(dta[, i])), kol$act)])
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 2021-02-22
    相关资源
    最近更新 更多