2014-11-13 7 views
0

버지니아주의 2010 년 중간 선거와 2014 년 중간 선거 결과를 비교하고 있습니다. 버지니아주의지도를 통해 버지니아 의회 의원이있는 파일을 사용하여이 작업을 수행하고 있습니다. 저는 공화당이 붉은 색으로 칸디다를 치고 민주당이 칸디 데이트 블루를 선출 한 지구에 색을 칠하는 지구를 색칠하고 싶습니다.
프로젝트에 더 많은 부분이 있지만 일단이 작업을 수행하는 방법을 파악한 후에 나머지 프로젝트를 어떻게 처리 할 것인지 파악할 수 있습니다. 내가 파일을 사용하고R을 사용하여 shapefile의 다각형에 특정 색 지정하기

는 여기에서 찾을 :

library(maptools) 
library(shapefiles) 

CCBound <- readShapePoly("tl_rd13_51_cd113") 
CCBound2 <- CCBound 

system.time(plot(CCBound2)) 

이 나에게 좋은지도를 제공합니다

http://www.arcgis.com/home/item.html?id=dc20260d27654c64bfa0c2979a317597

이 내가 Shape 파일을 플롯 사용하고있는 코드입니다 10 개의 하원 의원 선거구가 명시된 버지니아 주.

위에서 말한 것처럼 지구의 채색에 대해 어떻게해야합니까?

답변

1

가 여기에 ggplot 솔루션입니다. 당신은 기본 R 방법을 요구하고있는 것처럼 보이지만, IMO는 ggplot을 배워서 유연성을 높이는 것이 가치가 있습니다. 이렇게하면 시작할 수 있습니다.

귀하가 제공하지 않았으므로 귀하의 데이터 형식에 대해 몇 가지 가정을해야했습니다. 아래 코드는이 예제에서 데이터가 어떻게 구성되어 있는지를 보여줍니다.

# 2010 and 2014 Congressional Election results in Virginia. 
data.2010 <- data.frame(district=sprintf("%02i",1:11), 
        R=c(63.9,53.1,27.2,62.3,50.8,76.3,59.2,37.3,51.2,62.9,48.8), 
        D=c(34.8,42.4,70.0,37.5,47.0,00.0,34.1,61.0,46.4,34.8,49.2)) 
data.2014 <- data.frame(district=sprintf("%02i",1:11), 
        R=c(63.0,57.9,000.0,60.3,61.0,75.5,60.9,31.7,74.9,56.6,40.4), 
        D=c(34.5,42.1,100.0,37.5,35.8,00.0,36.9,63.0,00.0,40.4,56.9)) 
data <- cbind(year=rep(c(2010,2014),each=11),rbind(data.2010,data.2014)) 
data$delta <- with(data,D-R) 
head(data) 
# year district R D delta 
# 1 2010  01 63.9 34.8 -29.1 
# 2 2010  02 53.1 42.4 -10.7 
# 3 2010  03 27.2 70.0 42.8 
# 4 2010  04 62.3 37.5 -24.8 
# 5 2010  05 50.8 47.0 -3.8 
# 6 2010  06 76.3 0.0 -76.3 

이 그림은지도를 표시합니다. 6 및 9 지구가 경쟁하는 동안 2014 년 3 지구에서 민주당이 반대가 실행하지만, 실행중인 민주당이 없음을

library(ggplot2) 
library(rgdal) 
setwd("c:/users/jlh/desktop/map/virginia.congressional.districts") 
map <- readOGR(dsn=".",layer="tl_rd13_51_cd113") 
map.data <- data.frame(id=rownames([email protected]),[email protected]$CD113FP) 
map.data <- merge(map.data,data) 
map.df <- fortify(map) 
map.df <- merge(map.df,map.data) 
ggplot(map.df,aes(x=long,y=lat,group=group))+ 
    geom_polygon(aes(fill=delta),color="grey20")+ 
    facet_wrap(~year,nr=2)+ 
    scale_fill_gradient2(low="red",high="blue",mid="white",limits=c(-100,100))+ 
    coord_map()+labs(x="",y="")+ 
    theme_bw()+ 
    theme(panel.grid=element_blank(), 
     panel.border=element_blank(), 
     axis.text=element_blank(), 
     axis.ticks=element_blank()) 

enter image description here

참고.

게시물 herehere에는 워크 플로에 대한 설명이 있습니다.

1

CCBound 개체는 SpatialPolygonsDataFrame입니다. 기본적으로 각 폴리곤에 대한 정보를 제공하는 폴리곤 수와 행 수가 많은 폴리곤 목록과 data.frame입니다. 그것에서

[email protected] 

, 우리는 (11 개) 지역이 있다는 것을 배울 : 당신은 data.frame을 통해 확인할 수 있습니다. 여기에서 누가 지구를 수상했는지에 따라 red 또는 blue 값을 갖는 색상 벡터를 만들 수 있습니다. 벡터의 값은 지구와 동일한 순서로 [email protected]에 있어야합니다. 이 벡터를 작성하면 col 인수를 사용하여 plot 함수를 호출 할 수 있습니다. cols이 색 벡터 인 경우, 당신은 시도 할 수 있습니다 :

plot(CCBound,col=cols) 
관련 문제