2016-05-31 205 views
3

enter image description here我想用GGPLOT2绘制堆积面积图,但我发现我的结果是不同的书(R图形菜谱图4-22)如何扭转堆叠顺序堆叠面积图使用GGPLOT2

library(gcookbook)

library(plyr)

ggplot(uspopage, aes(x=Year, y=Thousands, fill=AgeGroup, order=desc(AgeGroup))) + geom_area(colour="black", size=.2, alpha=.4) + scale_fill_brewer(palette="Blues")

堆叠顺序不能被反转(在这本书中, “> 64” 应该在底部)。这个过程中有什么不对吗?

+1

我不知道你的'ggplot2'版本,但有2.1.0版本:“订单美学已被正式弃用,它从未真正起作用,并且 记录不完善。” https://github.com/hadley/ggplot2/releases – bVa

+1

重新排列实际的数据框'uspopage'。如果你想让图例重新排序,可以颠倒水平顺序。 – joran

+2

也就是说,'uspopage $ AgeGroup = factor(uspopage $ AgeGroup,levels = rev(levels(uspopage $ AgeGroup)))' – Gregor

回答

2

特别的方法是重新排序数据。取而代之的

AgeGroup 
     <5  
    5-14  
    15-24 

你想

AgeGroup 
>64  
55-64 
45-54 

所以,你可以采取的最后一个元素,并把它排在首位,排在第二位的倒数第二个元素,...发生类似的事情,以c("A", "B", "C", "D")[4:1]当你使用

swap <- uspopage[nrow(uspopage):1,] 
ggplot(swap, aes(x=Year, y=Thousands, fill=AgeGroup, order=desc(AgeGroup))) + 
geom_area(colour="black", size=.2, alpha=.4) + scale_fill_brewer(palette="Blues") 

2016年6月2日:我给了一些解释在评论请求后。

+0

它运作良好。但是你能给出一些解释吗? –