ここに地図を描いているのですが、うまく塗りつぶせません。助けていただければ幸いです。それで、私は何をしますか
マップを読み、投影を変更します。
map<-readOGR(dsn="e:\\r\\OSM_adm_reg\\adm4_region (1)", layer="adm4_region")
map=spTransform(map,CRS("+proj=latlong +ellips=GRS80"))
全国の物流倉庫の場所に関するデータを読み取り、world.cities データベースと照合して地図上にプロットします。
data(world.cities)
russian.cities=world.cities[world.cities$country.etc=="Russia",]
metro_outlets=read.csv(file="e:\\r\\retail\\metro.csv",head=TRUE,sep=";")
match<-match(metro_outlets$CITY_ENGLISH, russian.cities$name)
outlet_coordinates=russian.cities[match,]
outlet_coordinates=cbind(outlet_coordinates, "metro_store_count"=metro_outlets$STORE_COUNT_METRO)
outlet_coordinates=cbind(outlet_coordinates, "cch_depo"=metro_outlets$DEPO_FOOD)
outlet_coordinates=cbind(outlet_coordinates, "NAME_LAT"=metro_outlets$STORE_OBLAST)
outlet_coordinates=cbind(outlet_coordinates, "cch_franchise"=metro_outlets$Franchise)
outlet_coordinates=cbind(outlet_coordinates, "SL"=metro_outlets$SL)
基本的に、SL 列の値に基づいて領域を埋める必要があります。ここで、WH を含むリージョンのリストを取得しようとしています。
outlet_spatial=SpatialPoints(outlet_coordinates[,c(5,4)],proj4string=CRS(proj4string(map)))
index=over(outlet_spatial,map)
region_names=rownames(map@data[map@data$NAME_LAT %in% index$NAME_LAT,])
map_df<-fortify(map,map$NAME_LAT)
map_df$fill=ifelse(map_df$id %in% region_names,"true","false")
そしてマップをプロットします:
ggplot()+
geom_polygon(data=map_df,aes(x=long,y=lat,group=group,fill=fill),col="gray")+
scale_fill_manual(values=c("gray","gray70"))+xlim(20, 180) + ylim(40,80)+
geom_point(aes(x=long,y=lat), color="orange",alpha=I(8/10), data=outlet_coordinates)
これが私が手に入れた地図です!
map_df
さて、SL 列の値を に渡し、それに応じて領域を埋める方法がわかりません。SL の定義は次のとおりです。 outlet_coordinates=cbind(outlet_coordinates,"SL"=metro_outlets$SL)