有些国家没有在map()中着色,没有渐变填充r

时间:2014-04-03 18:24:47

标签: r map colorbrewer

我正在制作拉丁美洲地图(包括西班牙),该地图根据某些语音特征的平均数填写每个国家/地区。数字是连续的,因此渐变颜色填充(即更高的数字更暗)将是完美的。无论如何,这是我正在做的代码:

loc <- levels(data$country)
cases <- levels(as.factor(data$mean))
frics <- data.frame(loc,cases)
m <- map('worldHires',plot=F, xlim=c(-120,-35),ylim=c(-60,30), fill=T)
stm <- match.map(m, frics$loc)

frics$rank <- rank(as.numeric(frics$cases), ties='min')
pal <- brewer.pal(max(frics$rank),'Reds')
color <- pal[frics$rank]
frics.color <- color[stm]

map(m,col=frics.color,fill=T, lty=0,boundary=F,interior=F) # fill regions
map('worldHires',interior=T,add=T,col='grey30')

此外,这里是frics $ loc和frics $ cases的相应向量:

structure(list(loc = structure(c(7L, 1L, 10L, 8L, 9L, 12L, 14L, 
4L, 3L, 13L, 11L, 2L, 5L, 6L), .Label = c("Argentina", "Bolivia", 
"Chile", "Colombia", "Dominican Republic", "Ecuador", "El Salvador", 
"Guatemala", "Honduras", "Mexico", "Nicaragua", "Paraguay", "Puerto Rico", 
"Spain"), class = "factor"), cases = c(765, 1582, 928, 1055, 
608, 1780, 1976, 802, 1795, 530, 644, 1160, 633, 930)), .Names = c("loc", 
"cases"), row.names = c(NA, -14L), class = "data.frame")

因此,当我绘制地图时,事实证明有些国家没有填补。最值得注意的是,厄瓜多尔,以及其他中美洲国家。我怀疑这可能是因为我使用的调色板不支持14种不同的颜色。或者别的什么。

1 个答案:

答案 0 :(得分:1)

经过一些研究,似乎RColorBrewer在我能找到的任何调色板中都不支持超过12种连续颜色。我建议使用R colorRampPalette()中的默认函数。为了解决我的问题,我换了:

pal <- brewer.pal(max(frics$rank),'Reds')
color <- pal[frics$rank]

使用:

wbPal <- colorRampPalette(c('white','black')) #spectrum ranges from white to black
color <- wbPal(14) #number of distinct colors

生成的颜色矢量可以是您指定的长度,颜色是沿第一行中定义的光谱的渐变步长。在这种情况下,&#34;白色 - &gt;黑&#34 ;.一旦我得到一个有14个步骤的颜色矢量,其他国家就会适当填写。 map()&#34; col =&#34;一旦达到调色板中的最大颜色数,参数将默认为NA作为颜色​​。

感谢您的反馈。