2015-04-01 83 views
0

我有一个数据框'mydata.final'(见下文),其中包含美国县和连续数字变量'Mean.Wait',范围从0到10或者。我还创建了基于'Mean.Wait'的变量'wait',并将离散值从1('Mean.Wait'中的最低值)设置为5('Mean.Wait'中的最高值)。使用颜色强度的数字变量在美国地图上使用颜色美国县的颜色

我可以创建地图美国基于“等待”的,使用R包的价值有色县一个“地图”:

###################################################################### 
### Generating an artificial data file: 
###################################################################### 

library(maps) 
mydata.final <- data.frame(county = (map('county', plot = FALSE)$names), 
       stringsAsFactors = F) 

### My numeric variable: 
set.seed(123) 
mydata.final$Mean.Wait <- runif(nrow(mydata.final)) * 10 

### Introducing NAs to mimic my real data set: 
set.seed(1234) 
mydata.final$Mean.Wait[sample(1:nrow(mydata.final), 1500)] <- NA 

### Cutting the original numeric variable into categories 
### because I don't know how to color based on 'Mean.Wait': 
mydata.final$wait <- cut(mydata.final$Mean.Wait, breaks = 5) 
levels(mydata.final$wait) <- 1:5 
mydata.final$wait <- as.numeric(as.character(mydata.final$wait)) 

###################################################################### 
### Building a US map based on 'wait' (5 categories) 
###################################################################### 

### Creating my 5 colors: 
pal <- colorRampPalette(c("yellow", "red")) 
allcolors <- pal(5) 

### Looking at my 5 colors: 
barplot(1:5, rep(1,5), col = allcolors, horiz = T) 

### Builiding the US map using 5 categories in 'wait': 
map('county', fill = TRUE, col = allcolors[mydata.final$wait], 
      resolution = 0, lty = 0, bg = "transparent") 
map('state', lwd=1, add=TRUE) 

我的目标是:不是分裂“Mean.Wait”分成5个有序类别('等待'),我想根据我的(连续的)“Mean.Wait”的强度对地图上的县进行着色。什么是这样做的方式,甚至可以添加一个图例?非常感谢!

+0

你能否提供可能是一个州及其县的数据,以及其他任何可以让我们在该状态下运行可重复的代码示例[假设它再现了您的问题]? – lawyeR 2015-04-02 01:34:49

回答

0

您在4月2日的R-help上也提过这个问题。这是答案。

您可以使用colorRamp()rgb()获得更多连续的颜色。 例如

newpal <- colorRamp(c("yellow", "red")) 
missing <- is.na(mydata.final$Mean.Wait) 
newcol <- ifelse(missing, "white", 

rgb(newpal(mydata.final$Mean.Wait[!is.na(mydata.final$Mean.Wait)]/ 
            max(mydata.final$Mean.Wait, 
na.rm=T)), maxColorValue=255)) 
map('county', fill=TRUE, col=newcol, 
    resolution=0, lty=0, bg="transparent") 
map('state', lwd=1, add=TRUE) 

您也可以尝试在plotrix的color.scale功能,它允许你指定 呼叫中的NA的颜色。

library(plotrix) newcol<-color.scale(mydata.final$Mean.Wait,extremes=c("yellow","red"),na.color="white") 
相关问题