在R中更改ggplot geom_polygon的颜色方案

tca*_*h21 9 color-scheme r polygon map ggplot2

我正在使用地图库和ggplot的geom_polygon创建地图.我只想将默认的蓝色,红色,紫色配色方案更改为其他方式.我对ggplot非常新,所以如果我没有使用正确的数据类型,请原谅.以下是我使用的数据:

> 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
Run Code Online (Sandbox Code Playgroud)

这是代码:

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")
Run Code Online (Sandbox Code Playgroud)

我已经尝试了下面和更多:

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"))
Run Code Online (Sandbox Code Playgroud)

Cha*_*ase 18

问题是你使用的是色标,但是在图中使用了填充美学.您可以使用scale_fill_gradient()两种颜色和scale_fill_gradient2()三种颜色:

p + scale_fill_gradient(low = "pink", high = "green") #UGLY COLORS!!!
Run Code Online (Sandbox Code Playgroud)

scale_fill_brewer()抱怨在预期离散变量时提供连续变量的问题.一个简单的解决方法是创建离散箱,cut()然后将其用作填充美学:

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")
Run Code Online (Sandbox Code Playgroud)