R-属性表Barplot条件着色

时间:2019-07-18 07:49:26

标签: r

我想将条形的颜色更改为小于99%的红色,而将绿色更改为大于或等于99%的绿色。

我有事。表格:

data <- c(15,320,7,0,19,0)
table <- matrix(data, nrow=2, ncol=3, byrow=T)

创建Barpot:

barplot (prop.table(table,2)*100,
     col = ifelse(prop.table(table,2)[1,]>=.99, c("green","gray"),c("red","gray")))

在结果图中,所有条变为绿色。但是根据比例,中间的条应该变成红色。

2 个答案:

答案 0 :(得分:1)

结果是您可以叠加2个条形图并具有相同的输出:

bar.height <- prop.table(table,2)[1,]
bar.base <- c(1,1,1)
barplot(bar.base, border=NA)
barplot(bar.height, col = ifelse(bar.height<=.99, "red", "green"), border = NA, add = TRUE)

答案 1 :(得分:0)

首先,您的ifelse语句返回

> ifelse(prop.table(table,2)[1,]>=.99, c("green","gray"),c("red","gray"))
[1] "green" "gray"  "green"

所以,不,我不希望任何东西变成红色;)通常,当遇到这样的问题时,请先用手动值替换有问题的表达式。同样,条形图着色按矩阵的行排列。也就是说,如果给定的矩阵如

table <- matrix(c(20, 30, 40, 15, 10, 5, 30, 10, 10), 
  nrow=3, ncol=3, byrow=T)
barplot(table, col=c("DarkGreen", "Ivory", "NavyBlue"))

...每个条形图的每个底部现在都是深绿色,每个中间部分现在是象牙色,每个顶部现在是海军蓝色。要获得更复杂的配色方案,您可能必须手动编写条形图或使用具有手动比例的ggplot2。

enter image description here