【问题标题】:Change colour scheme for ggplot geom_polygon in R更改 R 中 ggplot geom_polygon 的配色方案
【发布时间】:2011-08-25 04:30:24
【问题描述】:

我正在使用地图库和 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

代码如下:

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

我已经尝试了以下以及更多:

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

【问题讨论】:

    标签: r map ggplot2 polygon color-scheme


    【解决方案1】:

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

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

    我遇到了scale_fill_brewer() 的问题,抱怨在需要离散变量时提供了连续变量。一个简单的解决方法是使用 cut() 创建离散的 bin,然后将其用作填充美学:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-05
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      • 2015-08-24
      相关资源
      最近更新 更多