2012-02-17 135 views
6

Creo que esta pregunta es ligeramente diferente a las preguntas similares hechas aquí antes debido al uso de scale_fill_brewer(. Estoy trabajando en un coropletas similares a éste https://gist.github.com/233134Cambiar texto/etiquetas ggplot leyenda

que tiene este aspecto:

Chloropleth

y la leyenda como:

legend

me gusta, pero quieren cambie las etiquetas en la leyenda de las etiquetas de corte, es decir, (2, 4) a algo más amigable como '2% a 4% 'o' 2% - 4% '. He visto en otro lugar que es fácil cambiar las etiquetas dentro de la escala _... como se ve here. Parece que no puedo averiguar dónde poner las etiquetas = argumento. Por supuesto, podría volver a codificar choropleth$rate_d, pero eso parece ser ineficiente. ¿Dónde debería poner el argumento labels=c(A, B, C, D...)?

Aquí está la parte del código de interés (para el código completo utiliza el enlace anterior)

choropleth$rate_d <- cut(choropleth$rate, breaks = c(seq(0, 10, by = 2), 35)) 

# Once you have the data in the right format, recreating the plot is straight 
# forward. 

ggplot(choropleth, aes(long, lat, group = group)) + 
    geom_polygon(aes(fill = rate_d), colour = alpha("white", 1/2), size = 0.2) + 
    geom_polygon(data = state_df, colour = "white", fill = NA) + 
    scale_fill_brewer(pal = "PuRd") 

Gracias de antemano por su ayuda.

EDIT: utilizando el método de Dwin (debería haber publicado este error ya que esto es lo que tenía que enfrentar antes)

> ggplot(choropleth, aes(long, lat, group = group)) + 
+ geom_polygon(aes(fill = rate_d), colour = alpha("white", 1/2), size = 0.2) + 
+ geom_polygon(data = state_df, colour = "white", fill = NA) + 
+ scale_fill_brewer(pal = "PuRd", labels = lev4) 
Error: Labels can only be specified in conjunction with breaks 
+0

Eres demasiado rápido. Vi el error y lo solucioné. Recibí un mensaje un poco más informativo: "Error: las etiquetas y los saltos deben tener la misma longitud" –

Respuesta

10

Además de añadir una versión modificada de los niveles, también es necesario establecer el parámetro 'breaks' a scale_fill_brewer:

lev = levels(rate_d) # used (2, 4] as test case 
lev2 <- gsub("\\,", "% to ", lev) 
lev3 <- gsub("\\]$", "%", lev2) 
lev3 
[1] "(2% to 4%" 
lev4 <- gsub("\\(|\\)", "", lev3) 
lev4 
[1] "2% to 4%" 

ggplot(choropleth, aes(long, lat, group = group)) + 
    geom_polygon(aes(fill = rate_d), colour = alpha("white", 1/2), size = 0.2) + 
    geom_polygon(data = state_df, colour = "white", fill = NA) + 
    scale_fill_brewer(pal = "PuRd", labels = lev4, , breaks=seq(0, 10, by = 2)) 
+0

Lo probé y obtuve el error que estaba obteniendo antes (sin embargo, un buen uso de gsub). Edité mi publicación para reflejar este error. –

+0

Después de las ediciones, funciona perfecto. Gracias DWin. Fueron los descansos! Duh eso es lo que dijo el error. Simplemente no sabía qué hacer con eso. –

+0

@TylerRinker Me doy cuenta de que este comportamiento es un poco molesto, pero me preocupaba que las personas pudieran configurar incorrectamente las etiquetas y que terminaran desalineadas con los descansos. – hadley

Cuestiones relacionadas