2012-09-07 15 views
6

Ich versuche, eine geom_area Grundstücksfläche zu erstellen, aber möchte jedes Gebiet Plot (arbeitet auf der ersten 'roten' Fläche, aber nicht die blaue) mit einer Linie. Hier ist mein bester Versuch, aber ich kann nicht herausfinden, wie man den Linientyp auch stapelt. Ideen?geom_area Grundstück mit Bereichen und Umrisse 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')) 

Antwort

7

Um einen Überblick auf den Bereich hinzufügen, einfach die colour ändern:

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

Aber die Linien zu zeichnen, dies zu tun:

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

Ich habe die Linienbreite wirklich groß gemacht, nur um den Unterschied zu verdeutlichen.

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

Danke Maiasaura! obwohl ich die anderen Typen gerne etwas mehr antworte, da ich mir keine Sorgen um die Zeilen in der Legende machen muss – mmann1123

3

Der Fehler war nur, dass Sie Position setzten = "Stack" innerhalb aes(). Ändern Sie zu

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

... und alles ist in Ordnung.

Verwandte Themen