2012-09-07 24 views
6

Tôi đang cố gắng tạo một cốt truyện geom_area xếp chồng lên nhau, nhưng muốn phác thảo từng ô diện tích (hoạt động trên khu vực 'đỏ' đầu tiên nhưng không phải là màu xanh) với một dòng. Đây là nỗ lực tốt nhất của tôi nhưng tôi không thể tìm ra cách làm cho loại đường xếp chồng lên nhau. Ý tưởng?geom_area cốt truyện với các khu vực và phác thảo 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')) 

Trả lời

7

Để thêm một phác thảo đến khu vực này, chỉ cần thay đổi colour:

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

Nhưng để vẽ các đường thẳng, làm điều này:

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

Tôi đã thực hiện chiều rộng đường thực sự lớn chỉ để minh họa sự khác biệt.

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

Cảm ơn Maiasaura! mặc dù tôi thích những người khác trả lời nhiều hơn một chút vì tôi không phải lo lắng về các dòng trong huyền thoại – mmann1123

3

Các lỗi được chỉ rằng bạn đã đặt position = "ngăn xếp" bên aes(). Thay đổi thành

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

... và tất cả đều ổn.

Các vấn đề liên quan