用R画有图例的中国地图

最近在网上找了几种画中国地图方法,最终觉得这个方法还是最适用的

1.用googlevis包,由于中国国情现在已经不能访问google地图了,所以大多中国用户来说只能望洋兴叹了。

2.用ggplot包,虽然也不错是,但试了后还是些限制的,要用到的gpclib包,在windows和redhat linux系统上是不被支持的,只有ubuntu系统上支持,所以对于想在win和redhad linux画图不太容易。而且画出来的地图容易变形,不好调整。

3.最后还是plot工具画的,看上还不错,经过多方法参考和修改后,分享给大家。

library(maps)
library(mapdata)
library(maptools)

# 中国地图
# map("china")

# 加载GIS数据
# GIS数据下载:http://cos.name/wp-content/uploads/2009/07/chinaprovinceborderdata_tar_gz.zip
x <- readShapePoly("bou2_4p.shp")

# 测试数据
# plot(x,col=gray(924:0/924));

# 定义地图颜色函数
getColor <- function(mapdata,provname,provcol,othercol)
{ f=function(x,y) ifelse(x %in% y,which(y==x),0);
  colIndex=sapply(iconv([email protected]$NAME,"GBK","UTF-8"),f,provname);
  col=c(othercol,provcol)[colIndex+1];
  return(col);
}

# 测试数据
# provname=c("北京市","天津市","上海市","重庆市"); provcol=c("red","green","yellow","purple");
# provcol=c("red","green","yellow","purple");
# plot(x,col=getColor(x,provname,provcol,"white"));

# 查看省份名
# as.character(na.omit(unique([email protected]$NAME)));

# 画地图数据
provname=c("北京市","天津市","河北省","山西省","内蒙古自治区", "辽宁省","吉林省","黑龙江省","上海市","江苏省", "浙江省","安徽省","福建省","江西省","山东省", "河南省","湖北省","湖南省","广东省", "广西壮族自治区","海南省","重庆市","四川省","贵州省", "云南省","西藏自治区","陕西省","甘肃省","青海省", "宁夏回族自治区","新疆维吾尔自治区","台湾省", "香港特别行政区");
pop <- c(1633,1115,6943,3393,2405,4298,2730,3824,1858,7625, 5060,6118,3581,4368,9367,9360,5699,6355,9449, 4768,845,2816,8127,3762,4514,284,3748,2617, 552,610,2095,2296,693); 

# 构建图例的位置
nf <- layout(matrix(c(1,1,1,1,1,2,1,1,1),3,3,byrow=TRUE), c(3,1), c(3,1), TRUE)
layout.show(nf)

#provcol <- rgb(red=1-pop/max(pop)/2,green=1-pop/max(pop)/2,blue=0);
#plot(x,col=getColor(x,provname,provcol,"white"),xlab="aaa",ylab="bbb");

provcol <- rgb(red=1-pop/max(pop)/1,green=1-pop/max(pop)/1,blue=1/1.5);
plot(x,col=getColor(x,provname,provcol,"white"),xlab="",ylab="")

## 整理数据
pop <- pop - min(pop)
pop=pop-min(pop)

# 添加图例
par(mar=c(0,0,0,0))
par(mar=c(1,1,2,0),cex=0.5)
barplot(as.matrix(rep(1,31)),col=sort(provcol,dec=T),horiz=T,axes=F,border = NA )
axis(1,seq(1,32,by=3),sort(pop[seq(1,32,by=3)]))

# 参考: http://blog.sina.com.cn/s/blog_7e4ac8b50101f1bh.html

时间: 2024-11-10 07:13:32

用R画有图例的中国地图的相关文章

神级程序员教你如何用四行代码画出一幅中国地图!Python就是牛逼

前面两行引入相应的库,真正的代码就4行,够简单吧.第1行甚至可以不写,它定义了图的大小.第2行我们创建一个地图,第3行把海岸线画上,第4行显示这个地图,就是这样: 你用 Java 的 4 行代码画一个地图出来? 然后我们开始画上国家,又是1行代码: m.drawcountries(linewidth=1.5) 就变成了这样: 看上去有点变形,这是因为我们没有添加任何投影的原因, Basemap 提供 24 种不同的投影方式,你可以自己一个个试一下,比较常用的是 兰勃特投影 ,我们添加一下: m

利用d3.js绘制中国地图

d3.js是一个比较强的数据可视化js工具.利用它画了一幅中国地图,如下图所示: 源码如下: <!DOCTYPE html> <html> <head> <script type="text/javascript" src="d3.js"></script> <script type="text/javascript" src="d3.csv.js">&l

R语言和中国地图

上图是R语言绘制的按地域分布的数据图.更科学,更严谨,也更有质感的样子. 今天瞎写点东西,我在想数据分析的意义是什么,也许就是研究事物存在的形式.而事物存在的形式是什么样子呢,从最初的三维空间,爱因斯坦伯伯把时间也拉了进来,于是时间作为一种变化的空间而存在着,成为第四维.现在好像还发现了第五空间,可能是人的心理空间或者意识空间,还有人说是曲率,不一而足.个人认为i,所有的事物应该都是彼此联系的,没有单纯的独立的与其他东西绝缘的存在.而人的内心,人的思维目前确实是独立于其他四维的空间.所以他应该是

使用R画地图数据

用R画地图数据 首先,从这里下载中国地图的GIS数据,这是一个压缩包,完全解压后包含三个文件(bou2_4p.dbf.bou2_4p.shp和bou2_4p.shx),将这三个文件解压到同一个目录下. 用R绘制地图比较简单.比如画一下全国范围的区域,可以用如下代码: library(maptools) mydat = readShapePoly("china-province-border-data.tar/china/bou2_4p.shp") #地图包位置,根据自己的角标位置设置

R语言与中国地图

一个合格的数据分析师必定能够从大量数据中洞察需求,并把数据和需求展示给团队人员,获得资源支持.数据可视化技术对于产品经理来说也是相当重要的一项技能,通过数据可视化技术我们可以把数据分析结果以"人性化"."友好"的方式反馈给各个合作方,使接收者能够较为愉快地了解整个行业.产品或其他方面的相关发展状况,从而有利于项目的顺利进行.在调研过程中我们经常会遇到与中国地区区域有关的数据显示问题,今天笔者在此讨论一下如何通过R软件来绘制中国地图及与之相关的类似于热力图/密度图等相

vue+vuex+axios+echarts画一个动态更新的中国地图

一. 生成项目及安装插件 # 安装vue-cli npm install vue-cli -g # 初始化项目 vue init webpack china-map # 切到目录下 cd china-map # 安装项目依赖 npm install # 安装 vuex npm install vuex --save # 安装 axios npm install axios --save # 安装 ECharts npm install echarts --save 二. 项目结构 ├── ind

用 4 行代码画一幅中国地图

为什么是Python 先来聊聊为什么做数据分析一定要用Python或R语言.编程语言这么多种,Java, PHP都很成熟,但是为什么在最近热火的数据分析领域,很多人选择用Python语言? 数据分析只是一个需求,理论上来讲,任何语言都可以满足任何需求,只是麻烦与简易之别.Python这门语言诞生也相当之早,它的第一个版本是26年前发表的,曾经(或者说当前)也被用于web开发,但是就流行程度来说,远远干不过Java和PHP. 东方不亮西方亮,在与Java干仗失败的这20几年时光里,Python练就

matlab利用m_map工具包画中国地图及散点云图

开始之前需要准备好malab,中国地图shp文件,m_map工具包. 中国地图shp文件可以在下面的链接中下载: https://gadm.org/download_country_v3.html 本文借鉴了下面链接中教程,该方法为matlab自带的画图工具包绘制方法,在我电脑上geoshow命令运行时间特别长,不知道为什么,感兴趣的同学可以试试: https://my.oschina.net/chengwei426/blog/674280 利用m_map绘制中国地图,代码如下: close a

echarts画中国地图并上色

任务是画一个中国地图,并在指定区域上颜色,学姐说用arcgis画,乖乖,4个g的安装文件,算了, 还是echarts大法好..如果想熟悉这个牛X的工具,请移步https://www.w3cschool.cn/echarts_tutorial/ 如果是写论文作图需要添加应用哦 最终效果如下: 参考了这个网址:https://www.cnblogs.com/luna666/p/9007263.html 另外还有个百度官方的例子:http://www.echartsjs.com/gallery/edi