使用ggplot中的图层更改特定图形的alpha并保持图例相同?

时间:2013-08-29 23:33:13

标签: r colors ggplot2 alpha

使用以下数据框:

sdf<-data.frame(hours=gl(n=3,k=1,length=9,labels=c(0,2,4)),    
                count=c(4500,1500,2600,4000,800,200,1500,50,20),
                machine=gl(n=3,k=3,length=9,labels=c("A","B","C")))

可以使用以下任一脚本生成以下图表:

ggplot(data=sdf,aes(x=hours,y=count,group=machine,fill=machine))+
  geom_area(data=sdf[sdf$machine=="A",])+
  geom_area(data=sdf[sdf$machine=="B",])+
  geom_area(data=sdf[sdf$machine=="C",])

ggplot(data=sdf,aes(x=hours,y=count,group=machine,fill=machine))+
  geom_area(position="dodge")

enter image description here

可以轻松更改颜色,但更改Alpha值也会更改图例:

ggplot(data=sdf,aes(x=hours,y=count,group=machine,fill=machine,alpha=machine))+
  geom_area(position="dodge")+
  scale_fill_manual(values=c("chocolate1","goldenrod","pink"))+
  scale_alpha_manual(values=c(0.01, 0.2, .1),guide=F)

enter image description here

理想情况下,图例不会淡化为相同的Alpha值。对于单个图形,这可能听起来很奇怪,但结果将是.gif文件的一部分。

问题:哪些脚本可以改变单个图形的alpha值,同时保持图例中颜色的稳固性?

1 个答案:

答案 0 :(得分:3)

回答而不是在这里发表评论,以便发布图片

这很奇怪:使用R 3.0.0和ggplot2 0.9.3.1,以下代码(与您发布的内容相同)

ggplot(data=sdf,aes(x=hours,y=count,group=machine,fill=machine,alpha=machine))+
  geom_area(position="dodge")+
  scale_fill_manual(values=c("chocolate1","goldenrod","pink"))+
  scale_alpha_manual(values=c(0.01, 0.2, .1),guide=F)

给了我

enter image description here

指南中的alpha为1。这是有道理的,因为guide=F已关闭scale_alpha_manual指南,允许alpha默认为1。