ggplot2 geom_bar颜色只有一列

时间:2014-06-02 22:27:26

标签: r ggplot2 geom-bar

考虑一个示例数据框和相对geom_bar

data = data.frame(method=LETTERS[sample(x=c(1,2,3),size=100,replace=T)], 
                  x1=sample(x=c(1,2,3,4,5,6),size=100,replace=T), 
                  x2=sample(x=c(1,2,3,4,5,6),size=100,replace=T),
                  d =letters[sample(c(1,2,3,4),size=100,replace=T)] )

ggplot()+
  geom_bar(data=data, aes(x=method, y=x1),stat="identity") +
  facet_wrap(~d, ncol=2)

我想为每个红色图的较小列着色。 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:4)

我不确定如何在不折叠数据的情况下执行此操作,以便能够创建指定哪个值最小的新列。然后你可以将美学与这个价值联系起来。这是使用您的数据的折叠策略

collapsed < -as.data.frame(xtabs(x1~d+method, data))
collapsed$ismin <- with(collapsed, ave(Freq,d,FUN=function(x) x==min(x)))

现在我们用

绘图
ggplot(collapsed, aes(x=method, y=Freq, fill=as.factor(ismin)))+
  geom_bar(stat="identity") +
  facet_wrap(~d, ncol=2) + 
  scale_fill_manual(breaks=c("0","1"), values=c("black","red"), guide="none")

导致

bar char with min mbar colored red in each factet