РЕДАКТИРОВАТЬ: я понял источник моей проблемы. У меня есть информация только для округов, для которых у меня есть данные, которые меньше, чем количество округов в районе, против которого я строю планы.
Разумеется, проблемные строки кода здесь:
mapnames <- map("county",plot=FALSE)[4]$names
colorsmatched <- d$colorBuckets [na.omit(match(mapnames ,d$stcon))]
Есть ли у кого-нибудь советы о том, как из библиотеки карт создать вектор соответствующей длины, который бы соответствовал количеству округов в Нью-Йорке, Нью-Джерси, Коннектикуте и Пенсильвания? Я хочу объединить данные подсчета, которые у меня есть, и включить нули для округов, о которых у меня нет информации.
Я пытаюсь следовать описанному здесь руководству: http://www.thisisthegreenroom.com/2009/choropleths-in-r/
Приведенный ниже код выполняется, но он либо не соответствует моему набору данных с данными maps_counties должным образом, либо не отображает его в том порядке, в котором я ожидал. Например, результирующие области для большей области Нью-Йорка не показывают плотности, в то время как случайные графства в РА показывают самую высокую плотность.
Общий формат моей таблицы данных:
county state count
fairfield connecticut 17
hartford connecticut 6
litchfield connecticut 3
new haven connecticut 12
...
...
westchester new york 70
yates new york 1
luzerne pennsylvania 1
Обратите внимание, что эти данные приведены в порядке по штатам, а затем по округам и включают в себя данные для CT, NJ, NY, & PA.
Сначала я прочитал в своем наборе данных:
library(maps)
library(RColorBrewer)
d <- read.table("gissum.txt", sep="\t", header=TRUE)
#Concatenate state and county info to match maps library
d$stcon <- paste(d$state, d$county, sep=",")
#Color bins
colors = brewer.pal(5, "PuBu")
d$colorBuckets <- as.factor(as.numeric(cut(d$count,c(0,10,20,30,40,50,300))))
Вот мое соответствие
mapnames <- map("county",plot=FALSE)[4]$names
colorsmatched <- d$colorBuckets [na.omit(match(mapnames ,d$stcon))]
Заговор:
map("county"
,c("new york","new jersey", "connecticut", "pennsylvania")
,col = colors[d$colorBuckets[na.omit(match(mapnames ,d$stcon))]]
,fill = TRUE
,resolution = 0
,lty = 0
,lwd= 0.5
)
map("state"
,c("new york","new jersey", "connecticut", "pennsylvania")
,col = "black"
,fill=FALSE
,add=TRUE
,lty=1
,lwd=2
)
map("county"
,c("new york","new jersey", "connecticut", "pennsylvania")
,col = "black"
,fill=FALSE
,add=TRUE
, lty=1
, lwd=.5
)
title(main="Respondent Home ZIP Codes by County")
Я уверен, что упускаю что-то базовое: порядок, в котором функции карт строят элементы, но я не могу понять это. Спасибо за помощь. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.