2015-04-01 103 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") 
相關問題