Ésta es una continuación de la pregunta aquí: Create non-overlapping stacked area plot with ggplot2Añadir etiquetas directos a ggplot2 tabla geom_area
Tengo un gráfico de áreas ggplot2 creado por el siguiente código. Quiero que las etiquetas de names
estén alineadas en el lado derecho del gráfico. Creo que directlabels
podría funcionar, pero estoy dispuesto a probar lo que sea más inteligente.
require(ggplot2)
require(plyr)
require(RColorBrewer)
require(RCurl)
require(directlabels)
link <- getURL("http://dl.dropbox.com/u/25609375/so_data/final.txt")
dat <- read.csv(textConnection(link), sep=' ', header=FALSE,
col.names=c('count', 'name', 'episode'))
dat <- ddply(dat, .(episode), transform, percent = count/sum(count))
# needed to make geom_area not freak out because of missing value
dat2 <- rbind(dat, data.frame(count = 0, name = 'lane',
episode = '02-tea-leaves', percent = 0))
g <- ggplot(arrange(dat2,name,episode), aes(x=episode,y=percent)) +
geom_area(aes(fill=name, group = name), position='stack') + scale_fill_brewer()
g1 <- g + geom_dl(method='last.points', aes(label=name))
estoy totalmente nuevo a directlabels
y no muy seguro de cómo obtener las etiquetas para alinear al lado derecho de la gráfica con los mismos colores que las áreas.
Gracias por la respuesta. Necesito encontrar etiquetas directas, porque no sé cuán generalizable es este enfoque. – Idr
@csgillespie, esto fue útil gracias. Aquí la sintaxis que utilicé (otra df): '' + geom_text (data = subconjunto (df, Year == "2012"), aes (x = Year, y = cumsum (value), label = variable), vjust = 6 , hjust = -.2, size = 4) '', donde lo encontré complicado para obtener los parámetros '' vjust'' y '' hjust'' correctos. Lo digo para enfatizar que puedes pasar '' cumsum'' a '' aes() '', que descubrí por prueba y error. Para la leyenda de la derecha, es útil establecer '' + guides (fill = guide_legend (reverse = TRUE)) '' para obtener los colores en el mismo orden que la imagen. ¿Desea actualizar el '' opts'' en desuso? – PatrickT
Y para capturar el último elemento del marco de datos ('' 06-at-the-codfish-ball'' en el OP y '' 2012'' en mi comentario anterior), puedes usar '' tail() '' función con el argumento '1', por ejemplo '' cola (df2.1 $ Año, 1) '' – PatrickT