今天给大家介绍的内容是用R语言绘制包含十段线[1]的地图,并且可以根据数据实现对各省份的填色。
本文参考了两篇推文:1[2]、2[3],并对它们进行了归总,提供了更简洁的可执行代码。
本文的所有代码以及数据可以在公众号后台回复[中国地图绘制]免费获得。如果需要往期部分推文代码,可去小编的Github获得(文末直达)。
加载所需R包:
packages<-c("geojsonsf","sf","ggplot2","RColorBrewer")install.packages(packages)library(geojsonsf)library(sf)library(ggplot2)library(RColorBrewer)获取地图数据通过调用API[4]来获取数据,这里需要获取全国和国境线的json数据,以及省份的经纬度。
全国和国境线的json数据,省份经纬度数据,以及本文源代码可以在公众号后台回复[中国地图绘制],免费获得。
colour<-read.csv("data/colour.csv")head(colour)shengfencolourQUHUADAIMA1新疆0~2006500002西藏0~2005400003青海600~10006300004甘肃0~2006200005宁夏200~4006400006内蒙古400~600150000将颜色数据按照省份名称对应添加到全国数据中,这里用到了dyplr包中left_join()函数:
colour$QUHUADAIMA<-as.character(colour$QUHUADAIMA)CHINA<-dplyr::left_join(China,colour,by="QUHUADAIMA")在绘制全局地图的命令中添加scale_fill_manual()函数给地图填色,配色方案可以参考:
colour$new_colour<-rep(0,nrow(colour))##给目标省份赋予不同的数值colour$new_colour[which(colour$shengfen=="重庆")]<-1colour$new_colour[which(colour$shengfen=="山西")]<-2colour$new_colour[which(colour$shengfen=="新疆")]<-3colour$new_colour[which(colour$shengfen=="内蒙古")]<-4CHINA<-dplyr::left_join(China,colour,by="QUHUADAIMA")head(colour)shengfencolourQUHUADAIMAnew_colour1新疆0~20065000032西藏0~20054000003青海600~100063000004甘肃0~20062000005宁夏200~40064000006内蒙古400~6001500004