ggplot2에서이 지리적 매핑 문제를 해결하는 방법에 대해 생각하고 있습니다. 문제는 ggplot이 일부 주에서는 데이터를 채우지 않고 비워 두는 것입니다. 이러한 상태는 필자의 필을 기반으로하지 않으므로 의미가 있습니다.R ggplot2 매핑 문제, 누락 된 상태 정보 자동화
는 내가 아마도 그 상태에 대한 행을 추가 그냥 0으로 그들을 채울 수 알고 있지만 값이 그 상태는 시간이 지남에 따라 변경해야합니다. 이번 달에이 달에 문자 그대로 파일을 저장하고 실행해야하는 사람은 누구나 자동으로 업데이트하려고하므로이 항목을 독자적으로 업데이트하고 싶습니다.
완벽한 세계에서 값이없는 상태는 축에 "침투가 없음"으로 다르게 표시됩니다.
GGplot 코드 :
내 데이터의map<- ggplot(penetration_levels,aes(long,lat,group=region,fill=Penetration),)+geom_polygon()+coord _equal()+scale_fill_gradient2(low="red",mid="white",high="green",midpoint=.25)
map
map<-map+geom_point(
data=mydata, aes(x=long, y=lat,group=1,fill=0, size=Annualized.Opportunity),
color="gray6") +
scale_size(name="Total Annual Opportunity-Millions",range=c(2,4))
map<-map+theme(plot.title = element_text(size = 12,face="bold"))
map
머리와
head(mydata)
Sold.To.Customer City State Annualized.Opportunity location lat long
21 10000110 NEW YORK NY 12.142579 NEW YORK,NY 40.71435 -74.00597
262 10016487 FORT LAUDERDALE FL 12.087310 FORT LAUDERDALE,FL 26.12244 -80.13732
349 11001422 ALLEN PARK MI 10.910575 ALLEN PARK,MI 42.25754 -83.21104
19 10000096 ALTON IL 10.040067 ALTON,IL 38.89060 -90.18428
477 11067228 BAY CITY TX 10.030829 BAY CITY,TX 28.98276 -95.96940
230 10014909 BETHPAGE NY 9.320271 BETHPAGE,NY 40.74427 -73.48207
head(penetration_levels)
State region long lat group order subregion state To From Total Penetration
17 AL alabama -87.46201 30.38968 1 1 <NA> AL 10794947 12537359 23332307 0.462661
18 AL alabama -87.48493 30.37249 1 2 <NA> AL 10794947 12537359 23332307 0.462661
22 AL alabama -87.52503 30.37249 1 3 <NA> AL 10794947 12537359 23332307 0.462661
36 AL alabama -87.53076 30.33239 1 4 <NA> AL 10794947 12537359 23332307 0.462661
37 AL alabama -87.57087 30.32665 1 5 <NA> AL 10794947 12537359 23332307 0.462661
65 AL alabama -87.58806 30.32665 1 6 <NA> AL 10794947 12537359 23332307 0.462661
병합 침투 :
이#geocode
geocode<-geocode(mydata$location)
mydata$lat<-geocode$lat
mydata$long<-geocode$lon
#create us map and graph
states<-map_data("state")
#merge states
states<-merge(states,statelookup,by="region")
penetration_levels<-merge(states,penetration_levels,by="State")
penetration_levels<- penetration_levels[order(penetration_levels$order), ]
그 다음은 D 간다 지도 플롯으로 직접
가'penetration_levels'를 생성 한 코드를보기 .내 생각 엔이 데이터 프레임에는 "침투가없는"상태의 폴리곤이 없으므로 아무 것도 플롯되지 않습니다. – jlhoward
전체 코드가 100k 라인을 넘었으므로이 코드를 많이 게시하고 싶지는 않습니다. 당신은 정확합니다, 그 주에 대한 정보가 없습니다. 내 문제는이 코드를 인계받는 사람이 누락 된 상태에 대한 데이터를 수동으로 입력해야한다는 것입니다. – NJ13
아마도 모양 파일 인'fortify (...)'로 시작한 다음 데이터 세트와 병합하여 '침투'열. 병합 직전과 직후에 코드를 게시하십시오. – jlhoward