2

使用以下数据框:

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")

在此处输入图像描述

但是,当填充颜色更改时,图例中的项目会消失。

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",],fill="darkorchid")+
  geom_area(data=sdf[sdf$machine=="C",])

在此处输入图像描述

理想情况下,图例应显示颜色变化。

问题:什么脚本可以在图例中创建项目并为这些项目提供颜色控件?

4

1 回答 1

5

scale_您可以使用X _manual(values=(whatever)调整分配给任何美学的值)。在这里你想要scale_fill_manual

ggplot(data=sdf,aes(x=hours,y=count,group=machine,fill=machine))+
  geom_area(position="dodge") + 
  scale_fill_manual(values=c("red", "darkorchid", "green"))

在此处输入图像描述

请注意,通常,您希望让ggplot数据为您分组,就像您在第二次ggplot调用中所做的那样(这就是group参数的作用)。正如您在第一个示例中所做的那样,单独提供每个“切片”数据几乎违背了 的目的ggplot2,应该避免。

于 2013-08-29T19:15:17.977 回答