我正在处理R中的数据框,看起来像这样
test <- data.frame(c(1:4),c(5:8),c(9:12),c(13:16))
names(test) <- c("position","totalA","totalB","totalC")
不,我想创建一个堆积的条形图,其中所有条形图都是黑色的,除了1个位置值,我想要'totalA','totalB'和'totalC'的不同颜色
这就是我创建条形图
所做的test.melt <- melt(test, id = "position")
ggplot(test.melt, aes(x=position, y=value, fill=variable))+geom_bar(stat="identity")+scale_fill_manual(values=grey.colors(3))
所以现在所有的条都是有条件的颜色,但这应该只是当位置== 2时的情况。其余的条都应该是黑色。
编辑:我只需要使用barplot()函数而不是ggplot()来执行此操作。我将它用于条形图
test.transposed <- setNames(data.frame(t(test[,-1])), test [,1])
barplot(as.matrix(test.transposed))
但是,我现在怎样才能应用这种条件着色?
答案 0 :(得分:1)
您可以在数据中准备所需的群组,如下所示:
test.melt$colour <- ifelse(test.melt$position == 2,
as.character(test.melt$variable), "All other")
library(ggplot2)
ggplot(test.melt, aes(x=position, y=value, fill=colour))
+ geom_bar(stat="identity")
+ scale_fill_manual(values=c( "#000000", grey.colors(3)))
将产生:
答案 1 :(得分:0)
您可以在scale_fill_manual
中指定颜色:scale_fill_manual(values = c("#000000", "#dddddd", "#000000"))
ggplot(test.melt, aes(x=position, y=value, fill=variable))+geom_bar(stat="identity") + scale_fill_manual(values = c("#000000", "#dddddd", "#000000"))