Gráficos combinados de líneas apiladas positivas y negativas

Estoy tratando de hacer un gráfico de líneas apiladas en ggplot2 con valores positivos apilados sobre el eje x y valores negativos apilados por separado debajo del eje x. He tenido éxito al apilar cada uno de los tipos de línea por separado, pero no he podido tener ambos en una sola parcela. Estoy buscando ayuda sobre cómo puedo hacer esto, ya sea superponiendo tramas o haciendo algo creativo en una sola trama.

Mi código a continuación usa un ggplot simple con un gráfico geom_line apilado. La mitad de los "Tipos" son valores positivos con respecto al tiempo y la otra mitad de los "Tipos" son todos valores negativos.

    p <- ggplot(dataForm, aes(x=Time,y=Value,group=Type),colour=factor(Type))
    p + geom_line(aes(fill = Type),position = "stack")

He intentado una alternativa de especificar los valores positivos y negativos por separado sin éxito:

    p <- ggplot(dataForm, aes(x=Time,y=Value,group=Type),colour=factor(Type))
    p + geom_line(data = data1,aes(fill = Type),position = "stack")
    p + geom_line(data = data1,aes(fill = Type),position = "stack")

Cualquier consejo sobre cómo hacer esto es muy apreciado. Gracias.

preguntado el 03 de mayo de 12 a las 22:05

Ejemplos reproducibles son como el alcohol por aquí. Aflojan a todos y haz que hablen. Sugerencia sugerencia sugerencia. -

1 Respuestas

En ausencia de un ejemplo reproducible, me adapté este ejemplo de learnr:

library(ggplot2)
library(plyr)

data = read.table(text="Time    Type    Value
1   a   8
2   a   10
3   a   10
4   a   5
5   a   3
1   b   9
2   b   5
3   b   7
4   b   8
5   b   3
1   c   -3
2   c   -1
3   c   -5
4   c   -4
5   c   -7
1   d   -11
2   d   -3
3   d   -9
4   d   -6
5   d   -6", header=TRUE)

p <- ggplot(data, aes(x=Time))
p <- p + geom_line(subset = .(Type %in% c('a', 'b')),
                   aes(y=Value, colour = Type),
                   position = 'stack')
p <- p + geom_line(subset = .(Type %in% c('c', 'd')),
                   aes(y=Value, colour = Type),
                   position = 'stack')
p

Para producir esto:

Gráfico de líneas apiladas

Y, por si acaso, un gráfico de área con una línea horizontal:

p <- ggplot(data, aes(x=Time))
p <- p + geom_area(subset = .(Type %in% c('a', 'b')),
                   aes(y=Value, fill=Type),
                   position = 'stack')
p <- p + geom_area(subset = .(Type %in% c('c', 'd')),
                   aes(y=Value, fill = Type),
                   position = 'stack')
p <- p + geom_hline(yintercept=0)
p

gráfico de área

contestado el 23 de mayo de 17 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.