绘制地图&热力图-R语言

本文介绍了如何使用R语言来绘制地图和热力图,通过下载地图文件并进行数据处理,展示了调整投影方式和添加颜色、地区标签等步骤,最终生成具有视觉吸引力的地图图像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言说明

对于地域信息的描述,采用地图的形式展现会比语言描述或者一般的条形图、饼图更直观,近期需要展现不同地区数据差别,可以借鉴一些网站例如地图惠等导入数据制作,但很多都有一定限制,例如注册收费等,故利用R进行了绘制。参考openthings的博客成功制作出了漂亮的地图,他的博客写的很详细,很赞。
首先下载地图文件及其他用到的数据,解压保存到自己指定的文件夹中,绘图所用到的数据均在该文件中。

R代码实现

##加载相关包
library(mapdata)
library(maptools)
library(ggplot2)
library(plyr)

读取地图文件,并绘制出图形

china_map=readShapePoly("E://study_data//chinaprovinceborderdata_tar_gz//bou2_4p.shp")
plot(china_map)

效果如图,由于投影结果过于扁平,故需要调整。
这里写图片描述

ggplot(china_map,aes(x=long,y=lat,group=group))+
geom_polygon(fill="white",colour="black")+
coord_map("polyconic")+
theme(
    panel.grid=element_blank(),
    panel.background=element_blank(),
    axis.text=element_blank(),
    axis.ticks=element_blank(),
    axis.title=element_blank(),
    legend.position=c(0.2,0.3)
  )

调整投影方式后,图像如下,可以不要theme部分,自己查看效果,会有经纬线等信息。
这里写图片描述

x<-china_map@data
xs<-data.frame(x,id=seq(0:924)-1)#地图中共计有925个地域信息
china_map1<-fortify(china_map)
china_map_data<-join(china_map1,xs,type="full")#基于id进行连接
#unique(china_map@data$NAME)#查看地图数据中保存的地域名称,编辑自己的数据与其一致
mydata<-read.csv("E://study_data//data_dt.csv",header=T,as.is=T)
china_data <- join(china_map_data, mydata, type="full")#基于NAME字段进行连接,NAME字段来自于地图文件中

上述代码将地图数据与自己的数据进行连接,合并在一起,进一步绘制符合自己要求的热力图。

ggplot(china_data,aes(x=long,y=lat,group=group,fill=ratio))+
  geom_polygon(colour="grey40")+
  scale_fill_gradient(low="white",high="red")+
  coord_map("polyconic")+
  theme(
    panel.grid=element_blank(),
    panel.background=element_blank(),
    axis.text=element_blank(),
    axis.ticks=element_blank(),
    axis.title=element_blank(),
    legend.position=c(0.2,0.3)
  )##参数“ratio”为我们要展现的数据指标,基于该指标绘制热力图

图形结果如下,是不是有那么一丢丢好看,颜色可自己调整,这里我选用的红色。
这里写图片描述

下面加上地区标签。

province_city<-read.csv("E://study_data//pcity.csv",header=T,as.is=T)#获取省会城市坐标
ggplot(china_data,aes(long,lat))+
  geom_polygon(aes(group=group,fill=ratio),colour="grey",size=0.01)+
  scale_fill_gradient(low="white",high="red")+
  coord_map("polyconic")+
  geom_text(aes(x=jd,y=wd,label=name),data=province_city,colour="black",size=2.5)+
  theme(
    panel.grid=element_blank(),
    panel.background=element_blank(),
    axis.text=element_blank(),
    axis.ticks=element_blank(),
    axis.title=element_blank()
  )

边缘色为黑色个人觉得不好看很丑,调整为grey,最终成果图如下。
这里写图片描述

评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值