我想将条形的颜色更改为小于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")))
在结果图中,所有条变为绿色。但是根据比例,中间的条应该变成红色。
答案 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。