我目前正在尝试使用ggplot创建带有部分透明的单个条形图的条形图。

我有以下代码:

dt1 <- data.table(yr=c(2010,2010,2011,2011),
                  val=c(1500,3000,2000,1100),
                  x=c("a","b","a","b"))


ggplot() + geom_bar(data=dt1, aes(x=yr, y=val,fill=x),stat="identity") +
  scale_x_continuous(breaks=dt1$yr)

这将创建一个简单的图表,该图表包含2列带有堆叠数据的列。我尝试了以下代码来调整2011年的值以具有透明度,但是我运气不佳。有指针吗?
dt1[,alphayr:=ifelse(yr==2011,.5,1)]
ggplot() + geom_bar(data=dt1, aes(x=yr, y=val,fill=x),stat="identity", alpha=dt1$alphayr) +
scale_x_continuous(breaks=dt1$yr)

最佳答案

首先,按照@jazzurro的建议,将alpha放入aes中。但是,您应该为此使用factor以获得离散比例。然后,您可以手动调整Alpha比例。

ggplot() + geom_bar(data=dt1, aes(x=yr, y=val, fill=x, alpha=factor(alphayr)), stat="identity") +
  scale_x_continuous(breaks=dt1$yr) +
  scale_alpha_manual(values = c("0.5"=0.5, "1"=1), guide='none')

10-08 15:49