改变ggplot直方图中一个值的颜色

时间:2012-11-14 03:21:37

标签: r ggplot2 histogram

我有一个简化的数据框

library(ggplot2)
df <- data.frame(wins=c(1,1,3,1,1,2,1,2,1,1,1,3))
ggplot(df,aes(x=wins))+geom_histogram(binwidth=0.5,fill="red")

我想得到序列中的最终值3,用不同的填充或alpha显示。确定其价值的一种方法是

tail(df,1)$wins

另外,我想让直方图条移动,使它们以数字为中心。我试图从wins值中减去

2 个答案:

答案 0 :(得分:1)

1)要绘制不同颜色的分档,可以使用geom_histogram()作为子集。

2)要沿x轴上的数字居中显示条,您可以调用scale_x_continuous(breaks=..., labels=...)

所以,这段代码

library(ggplot2)
df <- data.frame(wins=c(1,1,3,1,1,2,11,2,11,15,1,1,3))
cond <- df$wins == tail(df,1)$wins

ggplot(df, aes(x=wins)) +
  geom_histogram(data=subset(df,cond==FALSE), binwidth=0.5, fill="red") +
  geom_histogram(data=subset(df,cond==TRUE), binwidth=0.5, fill="blue") +
  scale_x_continuous(breaks=df$wins+0.25, labels=df$wins)

产生情节:

enter image description here

答案 1 :(得分:0)

您可以使用geom_histogram()一个aes(fill = cond)执行此操作。

要选择不同的颜色,请使用scale_fill_*()功能之一,例如scale_fill_manual(values = c("red", "blue")

library(ggplot2)
df <- data.frame(wins=c(1,1,3,1,1,2,11,2,11,15,1,1,3))
df$cond <- df$wins == tail(df,1)$wins
ggplot(df, aes(x=wins, fill = cond)) +
  geom_histogram() +
  scale_x_continuous(breaks=df$wins+0.25, labels=df$wins) +
  scale_fill_manual(values = c("red", "blue"))

enter image description here