更改geom_bar对象的不透明度

时间:2016-10-31 21:30:55

标签: r ggplot2

我正在尝试更改ggplot条形图的不透明度。请考虑以下示例:

df <- data.frame(period = rep(c("current", "past"), 3), 
                 type = c("so_far", "so_far", "source_x", "source_x", "source_y", "source_y"), 
                 income = c(12, 10, 7, 9, 4, 7))
ggplot(df, aes(x = period, y = income, fill = type)) + geom_bar(stat = "identity")

这给出了以下情节: enter image description here

实际上,虽然对于当前时期,source_x和source_y是估计值,但在过去它们是真值。所以我想改变左侧栏上蓝色和绿色部分的不透明度。 可以这样做吗?怎么样?

1 个答案:

答案 0 :(得分:6)

虚线边框可能会更好地突出显示包含估算值的条形区域。在下面的代码中,我使用了线型和alpha美学来标记估计的两个条形部分。我还颠倒了图例,以便颜色顺序与堆叠条的颜色顺序相对应。

library(ggplot2)

ggplot(df, aes(x = period, y = income, fill = type, 
               linetype=ifelse(grepl("current", period) & grepl("source", type), "B", "A"),
               alpha=ifelse(grepl("current", period) & grepl("source", type), 0, 1))) + 
  geom_bar(stat = "identity", lwd=0.5, colour="grey40") +
  scale_alpha(range=c(0.5,1)) + 
  theme_bw() +
  guides(alpha=FALSE, linetype=FALSE,
         fill=guide_legend(reverse=TRUE))

enter image description here