2011-05-13 15 views
9

Estoy creando un mapa usando la biblioteca de mapas y geom_polygon de ggplot. Simplemente me gustaría cambiar el esquema de color predeterminado azul, rojo, morado a otra cosa. Soy extremadamente nuevo en ggplot, así que, por favor, perdona si no estoy utilizando los tipos de datos correctos. Esto es lo que los datos que estoy usando el siguiente aspecto:Cambiar esquema de color para ggplot geom_polygon en R

> head(m) 
region  long  lat group order subregion Group.1 debt.to.income.ratio.mean ratio total 
17 alabama -87.46201 30.38968  1  1  <NA> alabama     12.4059 20.51282 39 
18 alabama -87.48493 30.37249  1  2  <NA> alabama     12.4059 20.51282 39 
19 alabama -87.52503 30.37249  1  3  <NA> alabama     12.4059 20.51282 39 
20 alabama -87.53076 30.33239  1  4  <NA> alabama     12.4059 20.51282 39 
21 alabama -87.57087 30.32665  1  5  <NA> alabama     12.4059 20.51282 39 
22 alabama -87.58806 30.32665  1  6  <NA> alabama     12.4059 20.51282 39 

> head(v) 
      Group.1 debt.to.income.ratio.mean ratio  region total 
alabama  alabama     12.40590 20.51282 alabama 39 
alaska   alaska     11.05333 33.33333  alaska  6 
arizona  arizona     11.62867 25.55556 arizona 90 
arkansas  arkansas     11.90300 5.00000 arkansas 20 
california california     11.00183 32.59587 california 678 
colorado  colorado     11.55424 30.43478 colorado 92 

Aquí está el código:

library(ggplot2) 
library(maps) 

states <- map_data("state") 
m <- merge(states, v, by="region") 
m <- m[order(m$order),] 

p<-qplot(long, lat, data=m, group=group, fill=ratio, geom="polygon") 

He intentado el siguiente y más:

cols <- c("8" = "red","4" = "blue","6" = "darkgreen", "10" = "orange") 
p + scale_colour_manual(values = cols) 
p + scale_colour_brewer(palette="Set1") 
p + scale_color_manual(values=c("#CC6666", "#9999CC")) 

Respuesta

16

El problema es que se están usando una escala de colores pero están usando la estética de relleno en la trama. Puede utilizar scale_fill_gradient() de dos colores y scale_fill_gradient2() por tres colores:

p + scale_fill_gradient(low = "pink", high = "green") #UGLY COLORS!!! 

que estaba recibiendo problemas con scale_fill_brewer() quejándose de una variable continua suministrada cuando se esperaba una variable discreta. Una solución fácil es crear contenedores discretos con cut() y luego usar eso como la estética de relleno:

m$breaks <- cut(m$ratio, 5) #Change to number of bins you want 

p <- qplot(long, lat, data = m, group = group, fill = breaks, geom = "polygon") 
p + scale_fill_brewer(palette = "Blues") 
+0

¡Gracias! Trabajado como un encanto. – tcash21

Cuestiones relacionadas