R语言 重庆地图绘制 + 主城 + 指北针

      我在做重庆地图的过程中遇到需要把主城区挑出来,找遍了市面的地图都没有重庆主城的。还有重庆有三个功能区,地图也是没有的。我自己做了主城的,还有三个功能区的,一共38个区+3个功能区(主城区和38+3,我整理好下次分享给大家)。

      小白也能可以顺利完成的。

1、获取地图

     阿里云地图等网址下载,下载json格式文件

DataV.GeoAtlas地理小工具系列 (aliyun.com)https://datav.aliyun.com/portal/school/atlas/area_selector2、将保存的json文件转换成phd格式文件,推荐使用小工具:

mapshaperhttps://mapshaper.org/

3、修改地图获取主城地图

4、先看结果

 5、R操作代码奉上:

Sys.setlocale(category = "LC_ALL", locale = "Chinese") #设置系统语言为简体中文
#library(tmap) #用来绘图
library(rgdal) #用来读取shp数据
library(RColorBrewer)#用来修改颜色
library(sp)
library(ggplot2)
library(plyr) 
library(maps) 
library(sf)
library(ggspatial)
library(cowplot)
library(colorspace)

setwd("F:/wjw/1 five") 
cq <- readOGR('.', "重庆市", encoding = "UTF-8") #读取地图
Encoding(cq@data$name) <- "UTF-8" ##转换格式为UTF-8
head(cq@data)

data1 <- cq@data         
data2 <- data.frame(id=row.names(data1),data1)  

cq_ <- fortify(cq) #转化为数据框
cq_map_data <- join(cq_, data2, type = "full") 
head(cq_map_data)

mydata1 <- data.frame(read.csv("xxxxx.csv"))

#读取业务指标数据,并与地图数据合并
cq_data <- join(cq_map_data, mydata1, type="full") #合并两个数据框

cq_data[,23]<-factor(cq_data[,23],levels=c("≥200","150~200","100~150","50~100","<50"))
cq_data[,22]<-factor(cq_data[,22],levels=c("≥4%","3~4%","2~3%","1~2%","<1%"))
midpos <- function(data1) mean(range(data1,na.rm=TRUE))
centres <- ddply(cq_data,.(name),colwise(midpos,.(long,lat)))

# 绘图
windowsFonts(myFont = windowsFont("微软雅黑")) 

p1 <- ggplot(cq_data, aes(x = long, y = lat)) +
  geom_polygon(aes(group=group,fill=xx),colour="white")+
  #scale_fill_gradient(low="green",high="red")+ 
  #scale_fill_gradientn(colours = colorRampPalette(brewer.pal(5,'GnBu'))(24))+
  coord_map("polyconic") +
  geom_text(aes(label=name),size =4,angle = -17,family="myFont",fontface="plain",data=centres)+ 
  ggtitle("xxxx")+
  annotation_north_arrow(location='tl', which_north='false',
                         style=north_arrow_nautical(),
                         height = unit(2.0, "cm"),
                         width = unit(2.0, "cm"),
                         pad_x = unit(37, "cm"),
                         pad_y = unit(0.75, "cm")) +  # 添加指北针
  theme(plot.title=element_text(family="myFont",size=32,hjust = 0.5), 
        panel.grid=element_blank(),
        panel.background=element_blank(),
        axis.text=element_blank(),
        axis.ticks=element_blank(),
        axis.title=element_blank())


p1<-p1 + scale_fill_manual(values = c("#FF3333","#FFFF66","#99CCFF","#99FF00"))#手动换色
p1


cq_map_data <- data.frame(read.csv("cq_map_data1.csv")) # 修改后的主城区地图
cq_data <- join(cq_map_data, mydata1, type="full") #合并两个数据框

midpos <- function(data1) mean(range(data1,na.rm=TRUE))
centres <- ddply(cq_data,.(name),colwise(midpos,.(long,lat)))


# 绘图
windowsFonts(myFont = windowsFont("微软雅黑")) 





p3 <- ggplot(cq_data, aes(x = long, y = lat)) +
  geom_polygon(aes(group=group,fill=xxx),colour="white")+
  #scale_fill_gradient(low="green",high="red")+ 
  #scale_fill_gradientn(colours = colorRampPalette(brewer.pal(5,'GnBu'))(24))+
  coord_map("polyconic") +
  geom_text(aes(label=name),size =4,angle = -17,family="myFont",fontface="plain",data=centres)+ 
  ggtitle(NULL)+guides(fill=F)+
  # guides(fill=guide_legend(title=NULL))+
  theme(plot.title=element_text(family="myFont",size=32,hjust = 0.5), 
        panel.grid=element_blank(),
        panel.background=element_blank(),
        axis.text=element_blank(),
        axis.ticks=element_blank(),
        axis.title=element_blank())




p3<- p3 + scale_fill_manual(values = c("#99FF00","#FF3333","#99CCFF","#FFFF66","#FF9966"))#手动换色
p3


png('cq0518.png',bg="transparent",
    width = 5000, height = 4500, res=300)

library(cowplot)
P <- ggdraw(p1)+
  draw_plot(p3,x=-0.25,y=-0.07,scale = 0.25,width = 1,height = 1.6)
P

dev.off()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值