El eje x es el tiempo dividido en intervalos de tiempo. Hay una columna de intervalo en el marco de datos que especifica la hora de cada fila. La columna es un factor, donde cada intervalo es un nivel de factor diferente.¿Cuál es el método más simple para llenar el área bajo una línea geom_freqpoly?
Trazar un histograma o línea usando geom_histogram y geom_freqpoly funciona muy bien, pero me gustaría tener una línea, como la proporcionada por geom_freqpoly, con el área llena.
Actualmente estoy usando geom_freqpoly así:
ggplot(quake.data, aes(interval, fill=tweet.type)) + geom_freqpoly(aes(group = tweet.type, colour = tweet.type)) + opts(axis.text.x=theme_text(angle=-60, hjust=0, size = 6))
yo preferiría tener un área llena, como proporcionada por geom_density
, pero sin suavizar la línea:
Se ha sugerido geom_area
, ¿hay alguna forma de use una estadística generada por ggplot2, como ... cuenta .., para los valores y de geom_area? O bien, ¿la agregación de conteo debe ocurrir antes de usar ggplot2?
Como se indica en la respuesta, geom_area (..., stat = "bin") es la solución:
ggplot(quake.data, aes(interval)) + geom_area(aes(y = ..count.., fill = tweet.type, group = tweet.type), stat = "bin") + opts(axis.text.x=theme_text(angle=-60, hjust=0, size = 6))
produce:
si ya está haciendo los intervalos ¿está seguro de que quiere una curva suave? – Dan
No, solo estaba explorando los geoms ggplot2 que producirían el área llena.Preferiría el geom_freqpoly, pero con un área llena. Supongo que geom_area lo obtendrá, pero tendré que agregar manualmente el recuento de frecuencias. – mattrepl
En realidad, ¿hay alguna razón por la que está utilizando un factor en lugar de una variable de fecha y hora? – hadley