2011-05-13 14 views
9

Harita kütüphanesini ve ggplot'ın geom_polygon sayfasını kullanarak bir harita oluşturacağım. Varsayılan mavi, kırmızı, mor renk şemasını başka bir şeye değiştirmek isterim. Ben ggplot için çok yeni, bu yüzden doğru veri tiplerini kullanmıyorsam lütfen affedin. Aşağıda denedimggplot geom_polygon için renk şemasını değiştir: R

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") 

ve daha: kod İşte

> 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 

: Burada gibi görünüyor kullanıyorum hangi verileri var

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")) 

cevap

16

sorun sen misin Bir renk skalası kullanıyorlar ancak dolgudaki estetiği kullanıyorlar. Üç renkler için iki renk için scale_fill_gradient() ve scale_fill_gradient2() kullanabilirsiniz: Ben scale_fill_brewer() ayrı değişken bekleniyordu zaman verilen sürekli değişken şikayet ile ilgili sorunlar başlamıştı

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

. Tek bir kolay düzeltme, cut() ile ayrı kutular oluşturmak ve bunu dolgu estetiği olarak kullanmaktır:

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

Teşekkür ederiz! Bir çekicilik gibi çalıştı. – tcash21