在ggplot2中填充2种不同颜色的背景

时间:2014-01-25 13:37:48

标签: r colors ggplot2 fill

test<-data.frame(a=c('1','1','2','2'),b=c(2,-2,4,-3),d=c('m','n','m','n')) 
p+geom_bar(position=position_dodge(),stat='identity',fill='deeppink',colour='black',width=0.5)

enter image description here

我有一个条形图,我想要用数据中的b值(> 0和&lt; 0)或因子d(m和n)填充2种不同颜色的情节背景组。

是否可以在ggplot2中使用?

2 个答案:

答案 0 :(得分:1)

编辑:误解了OP的问题---使用面板和geom_rect,你可以在某种程度上接近你想要的东西。可能需要进行一些调整,但理想情况下,您有自己的想法。请点击此处查看类似问题:Conditional formatting of panel background in GGplot2

EDIT2:引入了另一个变量(面板),因此不再基于b进行分面并且看起来更好

require(ggplot2)
test<-data.frame(a=c('1','1','2','2'),b=c(2,-2,4,-3),d=c('m','n','m','n')) 
x <- rep(seq(1,2),2)
test$panel <- x
test$colorindicator = ifelse(test$b<0,"negative","positive")
p=ggplot(data=test,aes(x=a,y=b))
p = p + geom_rect(aes(fill = colorindicator), xmin = -Inf, xmax = Inf, ymin = -Inf, ymax = Inf, alpha = 1) 
p = p + geom_bar(fill='deeppink',color="black",position=position_dodge(),stat='identity',width=0.5)
p = p + facet_grid(.~panel,scales="free")
print(p)

enter image description here

答案 1 :(得分:1)

@CMichael,非常感谢。从你的答案中,我在完成修改后得到了我想要的东西。

require(ggplot2)
test<-data.frame(a=c('1','1','2','2'),b=c(2,-2,4,-3),d=c('m','n','m','n')) 
p=ggplot(data=test,aes(x=a,y=b))
p = p + geom_rect(fill = 'red', xmin = -Inf, xmax = Inf, ymin =0, ymax = Inf, alpha =0.05) 
p = p + geom_rect(fill = 'green', xmin = -Inf, xmax = Inf, ymin =-Inf, ymax = 0, alpha =0.05)
p = p + geom_bar(fill='deeppink',color="black",position=position_dodge(),stat='identity',width=0.5) 
print (p)

enter image description here