在科研工作中,经常会遇到需要在地图上展示数据的情况,今天分享一下如何使用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

使用R语言可视化地图数据的更多相关文章

  1. R语言分析朝阳医院数据

    R语言分析朝阳医院数据 本次实践通过分析朝阳医院2016年销售数据,得出“月均消费次数”.“月均消费金额”.“客单价”.“消费趋势”等结果,并据此作出可视化图形. 一.读取数据: library(op ...

  2. [译]用R语言做挖掘数据《二》

    数据探索 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: ...

  3. R语言可视化学习笔记之添加p-value和显著性标记

    R语言可视化学习笔记之添加p-value和显著性标记 http://www.jianshu.com/p/b7274afff14f?from=timeline   上篇文章中提了一下如何通过ggpubr ...

  4. R语言实现金融数据的时间序列分析及建模

    R语言实现金融数据的时间序列分析及建模 一 移动平均    移动平均能消除数据中的季节变动和不规则变动.若序列中存在周期变动,则通常以周期为移动平均项数.移动平均法可以通过数据显示出数据长期趋势的变动 ...

  5. R语言处理Web数据

    R语言处理Web数据 许多网站提供的数据,以供其用户的消费.例如,世界卫生组织(WHO)提供的CSV,TXT和XML文件的形式的健康和医疗信息报告.基于R程序,我们可以通过编程提取这些网站的具体数据. ...

  6. 利用R语言进行交互数据可视化(转)

    上周在中国R语言大会北京会场上,给大家分享了如何利用R语言交互数据可视化.现场同学对这块内容颇有兴趣,故今天把一些常用的交互可视化的R包搬出来与大家分享. rCharts包 说起R语言的交互包,第一个 ...

  7. R语言︱处理缺失数据&&异常值检验、离群点分析、异常值处理

    在数据挖掘的过程中,数据预处理占到了整个过程的60% 脏数据:指一般不符合要求,以及不能直接进行相应分析的数据 脏数据包括:缺失值.异常值.不一致的值.重复数据及含有特殊符号(如#.¥.*)的数据 数 ...

  8. R语言XML格式数据导入与处理

    数据解析 XML是一种可扩展标记语言,它被设计用来传输和存储数据.XML是各种应用程序之间进行数据传输的最常用的工具.它与Access,Oracle和SQL Server等数据库不同,数据库提供了更强 ...

  9. R语言Data Frame数据框常用操作

    Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...

  10. R语言和大数据

    #安装R语言R3.3版本会出现各种so不存在的问题,退回去到R3.1版本时候就顺利安装.在安装R环境之前,先安装好中文(如果没有的话图表中显示汉字成框框了)和tcl/tk包(少了这个没法安装sqldf ...

随机推荐

  1. C#_自定义简单ORM

    一,基本思路:利用C#的标签和反射功能实现自定义轻量级ORM 标签Attribute附着在实体属性或实体类名上,这样可以取到实体对应的表名,属性对应的表字段名,数据类型,是否主键,字段注释等基本信息 ...

  2. TOYOTA SYSTEMS Programming Contest 2024(AtCoder Beginner Contest 377) 补题记录(A-E)

    AtCoder Beginner Contest 377 A - Rearranging ABC 字符串有ABC三个字母即可. #include<bits/stdc++.h> using ...

  3. Android WebView 加载 html页面 实现 不同分辨率 不同 dpi 缩放自适应处理 解决方案

    两种情况一起使用 实现 不同分辨率 不同 dpi 缩放自适应处理 //webview 需要配置 mWebView.getWebSetting().setUseWideViewPort(true);// ...

  4. Gitlab的基本操作

    Gitlab的基本操作 Gitlab添加组 添加组建组有多个项目分支,可以将开发添加到组里面进行设置权限, 不同的组就是公司不同的开发项目或者服务模块,不同的组添加不同的开发即可实现对开发设置权限的 ...

  5. 很干,但实用——4G模组供电设计及其选型推荐

    ​ 4G模组的外部电源供电设计十分重要,对系统稳定.射频性能都有直接影响. 怎么让工程师朋友们在应用开发中少走弯路呢? 我将以Air780E为例,陆续分享系列实用干货.无论你是专家还是菜鸟,无论你是否 ...

  6. 货店管理(delphi+sqlserver)

    之前给朋友做的货店管理程序,个人使用,数据量小,delphi开发的,sqlserver express版,fastReport做的报表(报表可以修改). 源代码全给他的,呵呵,他也可以简单修改了.   ...

  7. ibatis源码学习(一)整体设计和核心流程

    本文主要从ibatis框架的基本代码骨架进行切入,理解ibatis框架的整体设计思路,各组件的实现细节将在后文进行分析. 背景  介绍ibatis实现之前,先来看一段jdbc代码:  Class.fo ...

  8. rsync之实战

    简介 rsync是远程(或本地)复制和同步文件最常用的命令. 借助rsync命令,你可以跨目录,跨磁盘和跨网络远程与本地数据进行复制和同步.举例来说:在两台Linux主机之间进行数据备份和镜像.本文介 ...

  9. php-fpm相关操作

    php-fpm常用操作 一. php5.3.3之后使用新号方式控制php-fpm进程 INT, TERM 立即终止 QUIT 平滑终止 USR1 重新打开日志文件 USR2 平滑重启所有worker进 ...

  10. IEDA 控制台乱码解决

    1.修改idea 目录下的文件 idea64.exe.vmoptions idea.exe.vmoptions 在这个文件尾部增加 -Dfile.encoding=UTF-8 2.编辑ieda 文件配 ...