有条件地改变ggplot中直方图的颜色,而不显示两个条形轮廓?

时间:2016-04-08 05:05:59

标签: r ggplot2 colors histogram

我想改变直方图的一部分颜色,包括填充和轮廓,但是我遇到了一些困难。复制下面的代码示例:

require(ggplot2)

#make data
rand <- sample(1:500, 1200, replace=T)
dat <- data.frame(val=c(rand), name=c(rep("A",400),rep("B",400),rep("C",400)))
dat$cond <- ifelse(dat$val < 100 & dat$name=="B", "remove", dat$name)

# plot 3 histograms (A, B, C). Colour each histogram differently and colour data <100 in B differently 
ggplot(data=dat, aes(x=val,colour=cond, fill=cond)) +
  geom_histogram(alpha=0.4) +
  facet_wrap(~name, ncol=1)

First attempt.

这里的问题是所有绿色条上方的紫色线条,有没有办法将它们删除?

我还尝试了另一种改变颜色的方法。见下文:

ggplot(data=dat, aes(x=val,colour=name, fill=name)) +
  geom_histogram(alpha=0.4, data=subset(dat, name %in% c("A","C"))) +
  geom_histogram(alpha=0.4, data=subset(dat, val<100 & name=="B"), fill="grey", colour="grey") +
  geom_histogram(alpha=0.4, data=subset(dat, val>=100 & name=="B")) +
  facet_wrap(~name, ncol=1)

Second attempt

所以这会修复条形图上方的线条,但我现在在灰条下方有一条绿线。这是在灰色条纹之后将绿色条添加到图中的结果。我可以改变顺序,但是在绿色条形下面会形成一个灰色条。有没有办法让灰色条下方的灰线和绿色条下方的绿线?

我为这个问题的挑剔性质道歉,但我正在制作出版图像,所以我希望它看起来很完美!

2 个答案:

答案 0 :(得分:0)

为什么不简单地移除条形边缘?

ggplot(data=dat, aes(x=val, fill=cond)) +
  geom_histogram(alpha=0.4) +
  facet_wrap(~name, ncol=1)

答案 1 :(得分:0)

我解决了问题,解决方案是将<div id="left-panel" style="float:left;text-align:left"> <h2>About Me</h2> <div> Name: Jet "Humding3r" Geronimo<br /> Age: 11<br /> Hobbies: Coding, Gaming, Music</div> </div> </div> <div id="right-panel" style="float:right;text-align:right;"> <h2>My Stuff</h2> <div> <a href="https://github.com/Humding3r/number-guessing-game">Number Guessing Game</a> </div> </div> 添加到drop=TRUE以丢弃没有计数的分档。然后删除会阻止轮廓的重叠。

geom_histogram