首页 > 其他分享 >使用R语言可视化地图数据

使用R语言可视化地图数据

时间:2024-10-31 14:10:05浏览次数:1  
标签:rda 语言 地图 maps 导入 可视化 china 数据

在科研工作中,经常会遇到需要在地图上展示数据的情况,今天分享一下如何使用R语言可视化地图数据

# 先安装和导入R包,这里使用了本地地图数据,所以只导入maps包即可
# install.packages("maps")
library(maps)

# 设置文件路径及导入数据,导入的china.rda数据会在文末链接分享
setwd("D:/1/小红书/R语言/画地图/")
load("china.rda")

# 把导入的数据赋值给china_map 
# 因为后续代码使用了china_map ,所以这里有一个赋值,也可以直接使用china作为变量名
china_map <- china

# 这里是一个设置颜色的函数
getColor=function(mapdata,provname,provcol,othercol)
{
  f=function(x,y) ifelse(x %in% y,which(y==x),0);
  colIndex=sapply(mapdata@data$NAME,f,provname);
  col=c(othercol,provcol)[colIndex+1];
  return(col);
}

#输出到默认路径,并命名为a.png
png("a.png", width = 1000, height = 1000)

# 设置展示的各个省份的名称
provname=c("北京市","天津市","河北省","山西省","内蒙古自治区",
           "辽宁省","吉林省","黑龙江省","上海市","江苏省",
           "浙江省","安徽省","福建省","江西省","山东省",
           "河南省","湖北省","湖南省","广东省",
           "广西壮族自治区","海南省","重庆市","四川省","贵州省",
           "云南省","西藏自治区","陕西省","甘肃省","青海省",
           "宁夏回族自治区","新疆维吾尔自治区","台湾省",
           "香港特别行政区");
# 与各个省份对应的要展示的数据
pop=c(36, 22, 14, 11, 11,
      12, 100, 100, 0, 11,
      71, 21, 11, 100, 18,
      54, 18, 41, 38,
      91, 0, 27, 60, 81,
      69, 2, 60, 30, 54,
      69, 10, 1, 20);

# 因为需要绘制图例,所以这里设置了绘图的布局
nf <- layout(matrix(c(rep(1, 5), 0,
                      rep(1, 5), 2,
                      rep(1, 5), 0,
                      rep(1, 5), 0,
                      rep(1, 5), 0,
                      rep(1, 5), 0),6,6,byrow=TRUE), 
             widths =c(2,2,2,2,2,1), heights =  c(1,2.5,1,1,1))
layout.show(nf)

# 依旧是设置颜色
provcol=rgb(red=pop*2.55/255,green=1-pop*2.55/255,blue=0);

# 绘图,这里绘制地图的主题部分
plot(china_map,col=getColor(china_map,provname,provcol,"white"),
     xlab="",ylab="");

# 设置省会城市坐标
dat = read.csv(text = "城市,jd,wd
    北 京,116.4666667,39.9
    上 海,121.4833333,31.23333333
    天 津,117.1833333,39.15
    重 庆,106.5333333,29.53333333
    黑龙江,126.6833333,45.75
    吉林,125.3166667,43.86666667
    辽宁,123.4,41.83333333
    内蒙古,111.8,40.81666667
    河北,114.4666667,38.03333333
    山西,112.5666667,37.86666667
    山东,117,36.63333333
    河南,113.7,34.8
    陕西,108.9,34.26666667
    甘肃,103.8166667,36.05
    宁夏,106.2666667,38.33333333
    青海,101.75,36.63333333
    新疆,87.6,43.8
    安徽,117.3,31.85
    江苏,118.8333333,32.03333333
    浙江,120.15,30.23333333
    湖南,113,28.18333333
    江西,115.8666667,28.68333333
    湖北,114.35,30.61666667
    四川,104.0833333,30.65
    贵州,106.7,26.58333333
    福建,119.3,26.08333333
    台湾,121.5166667,25.05
    广东,113.25,23.13333333
    海南,110.3333333,20.03333333
    广西,108.3333333,22.8
    云南,102.6833333,25
    西藏,91.16666667,29.66666667
    香港,114.1666667,22.3
    澳门,113.5,22.2")
# 在各省份省会城市处标点及标出省份名称
points(dat$jd, dat$wd, pch = 19, col = rgb(0, 0, 0, 0.5))
text(dat$jd, dat$wd, dat[, 1], cex = 2, 
     col = rgb(0,0, 0, 0.7), 
     pos = c(2, 4, 4, 4, 3, 4, 2, 3, 4, 2, 
             4, 2, 2,4, 3, 2, 1, 3, 1, 1, 2
             , 3, 2, 2, 1, 2, 4, 3, 1, 2, 2, 4, 4, 2))
# 设置绘图边框信息
par(mar=c(1,0.5,1,4),cex=1)
col=rgb(red=c(1:100)*2.55/255,green=1-c(1:100)*2.55/255,blue=0);

# 绘制图例
barplot(as.matrix(rep(1,100)),col=sort(col,dec=F),horiz=F,axes=F,border = NA )
axis(4,seq(0,100,by=20),seq(0,100,by=20), cex=2)
dev.off()

 

 

图例的china.rda数据及绘图代码可在以下链接下载:
链接: https://pan.baidu.com/s/1NsX__i9-A6t4XqVefFnGUA 提取码: 9h5g

标签:rda,语言,地图,maps,导入,可视化,china,数据
From: https://www.cnblogs.com/KanRiChu/p/18517648

相关文章

  • Python+Django框架淘宝家用电器销售数据可视化系统作品截图和开题报告参考
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩,提供核心代码讲解,答辩指导。项目配有对应开发......
  • C语言学习----3
    #一些无关的小内容这个是作业的一个代码 再次可见printf %d代表对应的数据 #字符串 以上为字符串的大概含义我们用char来对字符以及字符串进行定义 printf中用%s来进行表其中的arr[]是表示数组(里面存放了很多字符)详细看下面的图片arr[]括号里一般放数据的......
  • Python+Django框架山西太原二手房数据可视化大屏系统开题报告参考
     博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育、辅导。所有项目都配有从入门到精通的基础知识视频课程,学习后应对毕业设计答辩,提供核心代码讲解,答辩指导。项目配有对应开发......
  • 汇编语言学习笔记(2)寄存器
    寄存器在CPU中:运算器进行信息处理;寄存器进行信息存储;控制器控制各种器件进行工作;内部总线连接各种器件,在它们之间进行数据的传送,本章以8086CPU为例讲解寄存器2.1通用寄存器8086CPU的所有寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX这4个寄存器通常用来存放......
  • CSS3可视化网站
    Uiverse uiverse.io/这是一个国外的开源项目,所有效果全部拿来即用,都不用安装任何第三方包。并且每个小组件的效果都非常炸裂。项目包含了我们常用到的一些组件,例如:按钮Button、多选框Checkbox、胶囊按钮Switch、加载特效Loading、输入框Input、表单Form、提示框TooltipCSS......
  • Go 语言中的nil
    在Go语言中,nil是一个预定义标识符,表示“零值”或“空值”,主要用于引用类型(如指针、切片、映射、通道、接口等)。在Go中,引用类型变量在未赋值时的默认值为nil,表示该变量未指向任何有效的内存地址或资源。1.nil的使用场景nil可以用于以下几种数据类型:指针(Pointer):nil表......
  • Go语言内置集合的隐式指针
    在Go语言中,有几种内置集合类型(如slice、map和channel),这些类型的特殊之处在于它们实际上是隐式指针。这意味着当我们将这些集合类型传递给函数或方法时,传递的是它们的引用,而不是拷贝。这种特性使得这些集合能够在函数中直接修改原始数据,而不需要显式传递指针。1.内置集合......
  • 如何在本地部署大语言模型:工具与指南
    在快速发展的人工智能领域,大语言模型(LLMs)正成为各类应用的核心。无论是在智能客服、内容生成,还是在教育与医疗等领域,这些模型的应用潜力巨大。然而,云端服务的高昂费用和数据隐私的担忧,让越来越多的用户希望能够在本地环境中部署这些强大的模型。本文将详细介绍如何利用多款......
  • 无人机避障——2D栅格地图pgm格式文件路径规划代码详解
    代码和测试效果请看上一篇博客:无人机避障——使用三维PCD点云生成的2D栅格地图PGM做路径规划-CSDN博客 更换模型文件.dae:部分模型文件可以从这里下载:https://github.com/ethz-asl/rotors_simulator/wiki将原先代码中的car.dae文件更换为无人机.dae文件然后对urdf文件进......
  • 无人机避障——使用三维PCD点云生成的2D栅格地图PGM做路径规划
            着重介绍通过对三维PCD点云进行处理生成2D栅格地图PGM,而后将该PGM地图充分运用到无人系统路径规划之中,使得无人机能够依据此规划合理避开飞行路线上可能出现的障碍物。(解决如何使用PGM的问题)HybridA*算法参考博客:HybridA*——ROS实现带有车辆运动......