单个条形图上的 ggplot 透明度
ggplot transparency on individual bar
我目前正在尝试使用 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')
一个有启发性的问答。其他读者可能不会使用 data.table
语法并且可能想看到结果,所以我简单地修改了@shadow 的答案以创建一个带有数据框的因子,并显示如下图。
dt1 <- data.frame(yr=c(2010,2010,2011,2011), val=c(1500,3000,2000,1100), x=c("a","b","a","b"))
创造因素
dt1$alphayr <- as.factor(ifelse(dt1$yr == "2011", 0.5, 1))
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')
我目前正在尝试使用 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')
一个有启发性的问答。其他读者可能不会使用 data.table
语法并且可能想看到结果,所以我简单地修改了@shadow 的答案以创建一个带有数据框的因子,并显示如下图。
dt1 <- data.frame(yr=c(2010,2010,2011,2011), val=c(1500,3000,2000,1100), x=c("a","b","a","b"))
创造因素
dt1$alphayr <- as.factor(ifelse(dt1$yr == "2011", 0.5, 1))
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')