2012-09-07 55 views
6

Estoy tratando de hacer un diagrama de geom_area apilado, pero me gustaría delinear cada gráfico de área (funciona en el primer área 'roja' pero no en el azul) con una línea. Este es mi mejor intento, pero no puedo entender cómo hacer que el tipo de línea también se apile. Ideas?diagrama de geom_area con áreas y contornos 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')) 

Respuesta

7

Para añadir un esquema de la zona, sólo tiene que cambiar el colour:

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

Pero para dibujar las líneas, haga lo siguiente:

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

He hecho que el ancho de la línea sea realmente grande solo para ilustrar la diferencia.

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

Gracias Maiasaura! aunque me gusta que los otros chicos respondan un poco más ya que no tengo que preocuparme por las líneas de la leyenda – mmann1123

3

El error fue sólo que estaban poniendo posición = "pila" dentro de AES(). Cambie a

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

... y todo está bien.

Cuestiones relacionadas