2012-04-11 8 views
8

Tengo la necesidad de colocar etiquetas sobre barras en ggplot. Solía ​​usar el método encontrado (HERE), pero esto no parece trabajar más ya que mi actualización ggplot2 ya que ahora sale el mensaje de error:RE: Alineación de números en las barras individuales con ggplot2

Error in continuous_scale(c("y", "ymin", "ymax", "yend", "yintercept", : 
    unused argument(s) (formatter = "percent") 

¿Cómo puedo volver trazar valores numéricos por encima de las barras cuando se utiliza el ejemplo:

df <- structure(list(A = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 
3L), .Label = c("0-50,000", "50,001-250,000", "250,001-Over"), class = "factor"), 
    B = structure(c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L), .Label = c("0-50,000", 
    "50,001-250,000", "250,001-Over"), class = "factor"), Freq = c(0.507713884992987, 
    0.258064516129032, 0.23422159887798, 0.168539325842697, 0.525280898876405, 
    0.306179775280899, 0.160958904109589, 0.243150684931507, 
    0.595890410958904)), .Names = c("A", "B", "Freq"), class = "data.frame", row.names = c(NA, 
-9L)) 

library(ggplot2) 

ggplot(data=df, aes(x=A, y=Freq))+ 
    geom_bar(aes(fill=B), position = position_dodge()) + 
    geom_text(aes(label = paste(sprintf("%.1f", Freq*100), "%", sep=""), 
        y = Freq+0.015, x=A), 
       size = 3, position = position_dodge(width=0.9)) + 
    scale_y_continuous(formatter = "percent") + 
    theme_bw() 

Running R 2,15 ggplot2 0.9 en un 7 máquina victoria

Respuesta

13

el error es de la llamada scale_y_continuous. El formato de las etiquetas ahora se maneja mediante el argumento labels. Vea el ggplot2 0.9.0 transition guide para más detalles.

Hubo otro problema con las etiquetas que no se alineaban correctamente; Lo arreglé agregando un group=B a la estética para el geom_text; Aunque no estoy seguro de por qué esto es necesario. También me llevó a cabo x=A de los geom_text la estética, ya que no era necesaria (que se heredó de la llamada ggplot.

library("ggplot2") 
library("scales") 

ggplot(data=df, aes(x=A, y=Freq))+ 
    geom_bar(aes(fill=B), position = position_dodge()) + 
    geom_text(aes(label = paste(sprintf("%.1f", Freq*100), "%", sep=""), 
        y = Freq+0.015, group=B), 
       size = 3, position = position_dodge(width=0.9)) + 
    scale_y_continuous(labels = percent) + 
    theme_bw() 

enter image description here

+0

Dang Había intentado etiquetas = "porcentaje" (como he comprobado ' ? scale_y_continuous') pero no lo intenté sin comillas. Tan cerca pero tan lejos. T a Brian. –

+0

No solo no necesita las comillas, sino que las funciones de formateo están ahora en el paquete 'scales', por lo que tiene que también se cargará –

Cuestiones relacionadas