R语言--地图和热图(初学者的摸爬滚打)

 制作地图有很多方法,每个方法采用的包都各有不同,思路也不同
 这里我采用以下方法,因为对我来说,这个思路最好理解


(1)去浏览器下载你制作对象的地图文件【河南省地图的经纬度数据,也就是shapefile格式(只需知道这是装经纬度数据的文件即可)的数据,具体操作在下面】
 常见问题:
(2)安装相应的包(sf包是R语言中处理地理空间数据的现代方法),读取地图的数据

 ①安装Rtools(安装sf包,应该需要先下载Rtools)
https://mirrors.tuna.tsinghua.edu.cn/CRAN/bin/windows/Rtools/

在这里安装和自己版本一致的Rtools

选择点击蓝色加深部分,进行下载

# 安装完之后,在R运行以下代码
writeLines('PATH="${RTOOLS40_HOME}\\usr\\bin;${PATH}"', con = "~/.Renviron")
# !!!重启R语言之后输入
Sys.which("make")
#如果环境配置成功,会有下述类似信息
#                                         make 
# "D:\\R-44~1.1\\rtools44\\usr\\bin\\make.exe" 
# 上面两步运行成功,就测试下能不能通过以下方式安装包 
install.packages("jsonlite", type = "source")
# 运行成功,就说明配置成功

②安装sf包

# install.packages("sf")
# library(sf)
# 如果以上代码不可行的话,用这个网址  https://cran.r-project.org/web/packages/sf/index.html (r-release: sf_1.0-18.zip)
# 下载完成后,在R中输入以下代码(第一个参数填zip的地址):
install.packages("D:\\R-4.4.1\\sf_1.0-18.zip", repos = NULL, type = "win.binary")
library(sf)
# Linking to GEOS 3.12.1, GDAL 3.8.4, PROJ 9.3.1; sf_use_s2() is TRUE
# 出现以上信息就是安装成功了

③ 读取地图数据
这里我是通过https://hxkj.vip/demo/echartsMap/这个网址下载的河南省地图,下载的geoJson数据


然后通过https://mapshaper.org/这个网址转化为 shapefile格式

把geoJson数据复制过来或者拖过来


下载好这个压缩包,解压,然后在下面输入这个文件的绝对路径

Henan_map <- read_sf("D:\\R-4.4.1\\Henan")

(3)绘制地图(看一下是否能输出地图)

install.packages("ggplot2")
library(ggplot2)
ggplot() +  
  geom_sf(data = Henan_map) +  
  theme_void()  # 使用空白主题以避免不必要的图形元素


(4)连接地图热图所需数据
 

# dplyr提供了一组方便易用的函数用于数据框的快速操作(用于将热图所需数据和地图数据合并)
install.packages("dplyr")  
library(dplyr)
# 热图所需数据(各市的2022年人均GDP数据)
henangdp_data <- data.frame(  
  region_name = c("郑州市", "洛阳市", "开封市", "平顶山市", "安阳市", "鹤壁市", "新乡市", "焦作市", "濮阳市", "许昌市", "漯河市", "三门峡市", "南阳市", "商丘市", "信阳市", "周口市", "驻马店市", "济源市"),  
  value = c(101169, 56075, 80226, 57193, 46350, 70422, 56156, 63434, 50475, 85515, 76493, 82276, 47344, 42227, 51752, 40951, 47136, 110517)  
)

henangdp_data
merged_data <- left_join(Henan_map, henangdp_data, by = c("name" = "region_name"))
merged_data

(5)制作热图

henanmap <- ggplot() +    
  geom_sf(data = merged_data, aes(fill = value)) +    
  scale_fill_gradient(low = "#fff0f5", high = "#ff69b4", name = "人均GDP") +  # 设置颜色梯度及图例标题  
  theme_void() +  
  ggtitle("河南省人均GDP热图")  # 添加图表标题
print(henanmap)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值