2012-09-07 39 views
6

我想做一個堆疊的geom_area陰謀,但想用一條線勾勒出每個區域陰謀(工作在第一個'紅色'區域但不是藍色)。這是我最好的嘗試,但我不知道如何使線型堆疊也。想法?geom_area與區域和輪廓的陰謀ggplot

example

df= data.frame(Time=as.numeric(strsplit('1939 1949 1959 1969 1979 1989 1999 2009 2019 2029 2039 2049 1939 1949 1959 1969 1979 1989 1999 2009 2019 2029 2039 2049', split=' ')[[1]]), 
       Acres=as.numeric(strsplit('139504.2 233529.0 392105.3 502983.9 685159.9 835594.7 882945.1 1212671.4 1475211.9 1717971.7 1862505.7 1934308.0 308261.4 502460.8 834303.1 1115150.7 1430797.8 1712085.8 1973366.1 1694907.7 1480506.0 1280047.6 1164200.5 1118045.3', split=' ')[[1]]), 
       WUClass= strsplit('DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban DenseUrban Urban Urban Urban Urban Urban Urban Urban Urban Urban Urban Urban Urban', split=' ')[[1]] 
       ) 

a=ggplot(df,aes(x = Time,y = Acres,fill=WUClass))+ geom_area(position = 'stack' ) 
plot(a) 
a+ geom_line(aes(position = 'stack')) 

回答

7

成輪廓添加到該區域,只需更改colour

ggplot(df,aes(x = Time,y = Acres,fill=WUClass)) + 
    geom_area(position = 'stack') + 
    geom_area(position = 'stack', colour="black", show_guide=FALSE) 

但要繪製線條,這樣做:

ggplot(df,aes(x = Time, y = Acres, fill=WUClass, group=WUClass)) + 
    geom_area() + geom_line(aes(ymax=Acres), position="stack") 

enter image description here

3

我已經使線寬真的很大,以說明差異。

ggplot(df,aes(x = Time, y = Acres, fill = WUClass)) + 
geom_area(position = 'stack', linetype = 1, size =2 ,colour="black" , 
show_guide=FALSE) + 
geom_line(aes(position = 'stack')) 

enter image description here

+0

謝謝Maiasaura!雖然我喜歡其他人回答多一點,因爲我不必擔心傳說中的線條 – mmann1123

3

錯誤只是在於你把位置= 「堆」 裏AES()。更改爲

a=ggplot(df,aes(x = Time,y = Acres, fill=WUClass))+ 
        geom_area(position = 'stack' ) 
a +geom_line(position = 'stack' ) 

...一切都很好。