使用R语言可视化地图数据
在科研工作中,经常会遇到需要在地图上展示数据的情况,今天分享一下如何使用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语言可视化地图数据的更多相关文章
- R语言分析朝阳医院数据
R语言分析朝阳医院数据 本次实践通过分析朝阳医院2016年销售数据,得出“月均消费次数”.“月均消费金额”.“客单价”.“消费趋势”等结果,并据此作出可视化图形. 一.读取数据: library(op ...
- [译]用R语言做挖掘数据《二》
数据探索 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: ...
- R语言可视化学习笔记之添加p-value和显著性标记
R语言可视化学习笔记之添加p-value和显著性标记 http://www.jianshu.com/p/b7274afff14f?from=timeline 上篇文章中提了一下如何通过ggpubr ...
- R语言实现金融数据的时间序列分析及建模
R语言实现金融数据的时间序列分析及建模 一 移动平均 移动平均能消除数据中的季节变动和不规则变动.若序列中存在周期变动,则通常以周期为移动平均项数.移动平均法可以通过数据显示出数据长期趋势的变动 ...
- R语言处理Web数据
R语言处理Web数据 许多网站提供的数据,以供其用户的消费.例如,世界卫生组织(WHO)提供的CSV,TXT和XML文件的形式的健康和医疗信息报告.基于R程序,我们可以通过编程提取这些网站的具体数据. ...
- 利用R语言进行交互数据可视化(转)
上周在中国R语言大会北京会场上,给大家分享了如何利用R语言交互数据可视化.现场同学对这块内容颇有兴趣,故今天把一些常用的交互可视化的R包搬出来与大家分享. rCharts包 说起R语言的交互包,第一个 ...
- R语言︱处理缺失数据&&异常值检验、离群点分析、异常值处理
在数据挖掘的过程中,数据预处理占到了整个过程的60% 脏数据:指一般不符合要求,以及不能直接进行相应分析的数据 脏数据包括:缺失值.异常值.不一致的值.重复数据及含有特殊符号(如#.¥.*)的数据 数 ...
- R语言XML格式数据导入与处理
数据解析 XML是一种可扩展标记语言,它被设计用来传输和存储数据.XML是各种应用程序之间进行数据传输的最常用的工具.它与Access,Oracle和SQL Server等数据库不同,数据库提供了更强 ...
- R语言Data Frame数据框常用操作
Data Frame一般被翻译为数据框,感觉就像是R中的表,由行和列组成,与Matrix不同的是,每个列可以是不同的数据类型,而Matrix是必须相同的. Data Frame每一列有列名,每一行也可 ...
- R语言和大数据
#安装R语言R3.3版本会出现各种so不存在的问题,退回去到R3.1版本时候就顺利安装.在安装R环境之前,先安装好中文(如果没有的话图表中显示汉字成框框了)和tcl/tk包(少了这个没法安装sqldf ...
随机推荐
- 为Markdown/HTML文档生成一个简易目录
现在阅览文章的网页往往都带有一个目录,方便点击跳转.目录一般都是根据文档中的标题级别直接生成的. 现在我们也来模仿一个简单的,无非就是把<h1><h2>...的序列转化成树嘛 ...
- jetpack1
组合函数 package com.example.myapplication1 import android.os.Bundle import androidx.activity.ComponentA ...
- Web渗透_11 补充结语 必看!!
业务逻辑漏洞 在web程序编写时,可能会留下各种各样的漏洞.最常见的就是利用Burpsuit,通过对包的拦截,对内容的修改,来利用了漏洞. 典型的例子就是电商系统.购买商品时,如果在请求包里,将购买数 ...
- 【VMware VCF】使用 Offline Bundle Transfer Utility(OBTU)配置 VCF 脱机库。
VMware Cloud Foundation 环境中,软件包仓库的来源支持两种方式,分别是 Online Depot 和 Offline Depot.第一种方式,是在 VCF 环境能够连接互联网的情 ...
- C++泛型一:模板
数据类型给程序设计带来的困扰及解决方案 int maxt(int, int); double maxt(double, double); 若有一种占位符T,能够代替类型,便可以简化代码的冗余编写 T ...
- Air780E量产binpkg文件如何获取
今天我们学习Air780E量产binpkg文件如何获取: 一.背景 最近luatos开发客户增多,客户在量产烧录的时候需要binpkg文件,但是有些客户不知道binpkg文件是什么,在哪里获取,是 ...
- 从零开始学机器学习——入门NLP
首先给大家介绍一个很好用的学习地址:https://cloudstudio.net/columns 今天我们将深入探讨自然语言处理(Natural Language Processing, NLP)这 ...
- element-ui resetFields 无效的问题
1.问题 触发bug的条件是先打开,编辑进行赋值,后打开新增 先点开编辑 再打开新增 这个时候你会发现刚刚赋值过的数据还遗留在表单里面 即使在打开 dialog 的时候执行了重置也没有效果 res ...
- python之异步任务框架Celery
官网参考: Celery 官网:http://www.celeryproject.org/ Celery 官方文档英文版:http://docs.celeryproject.org/en/latest ...
- pycharm之激活
激活相关文件: https://github.com/lanlangdeai/develop-kit/tree/master/software/editor/pycharm 一. 激活码激活 步骤: ...