R开发实例-map分布图
2018-03-27 21:46
169 查看
在网上查找R实战的的时候无意间看到这位大神的R开发实例:绘制分布图。对其十分感兴趣因此按照步骤,从头到尾做了一遍,也算是收获不小。
先附上原博客的链接https://www.cnblogs.com/tgzhu/p/5775829.html#undefined
下面,实战开始!
首先安装包
R命令: install.packages("devtools")
R命令: library(devtools)
R命令: install_github('badbye/baidumap')
R命令: install_github('lchiffon/REmap')
然后从网上下载了全国三甲医院的分布情况:之前博主的文章的链接失效了,我就重新找了一个类似的,经过测试是没问题的
附上链接:http://www.chisc.net/doc/DownSoft/?softid=5876&pathid=0
下载后就是对数据进行清洗,这也是非常重要的工作
首先数据是这样的
只需要医院的名称以及省份即可,因此对需要的部分进行抓取,得到下列的数据并导出到txt文件中,这是在excel中完成的
然后用read.table读取该文件,并转换成dataframehs <- read.table("hospital distribution.txt", header = FALSE, sep = '\t')
hst <- as.data.frame(hs)
colnames(hstcl) <- c("city", "name")效果如下图
接下来写了一个脚本对数据做转换(其实这些用excel很容易完成,但是想锻炼写代码的能力,就...)
dataframetrans <- function(mydf){
rows <- dim(mydf)[1]
city <- NULL
x <- NULL
for (i in 1:rows){
if(mydf[i, 2] == "") {city <- mydf[i,1]
next}
city <- as.character(city)
row <- c(city, as.character(mydf[i, 2]))
x<- rbind(x, row) }
return (x)}
得到结果如下图
然后#这一步是将字符串里的不必要的文字都去掉
hstcl1[,1] <- str_remove_all(hstcl1[,1],"[0-9、()省市自治区维吾尔回族壮族]")
得到结果如下图
至此前期的数据清洗就都完成了。
接下来就是按照大神的代码加载baidumap包,获取医院的经纬度#加载baidumap 根据名称获取医院经纬度
library(baidumap)
bhs <- getCoordinate(hstcl1$name,formatted = T)
先附上原博客的链接https://www.cnblogs.com/tgzhu/p/5775829.html#undefined
下面,实战开始!
首先安装包
R命令: install.packages("devtools")
R命令: library(devtools)
R命令: install_github('badbye/baidumap')
R命令: install_github('lchiffon/REmap')
然后从网上下载了全国三甲医院的分布情况:之前博主的文章的链接失效了,我就重新找了一个类似的,经过测试是没问题的
附上链接:http://www.chisc.net/doc/DownSoft/?softid=5876&pathid=0
下载后就是对数据进行清洗,这也是非常重要的工作
首先数据是这样的
只需要医院的名称以及省份即可,因此对需要的部分进行抓取,得到下列的数据并导出到txt文件中,这是在excel中完成的
然后用read.table读取该文件,并转换成dataframehs <- read.table("hospital distribution.txt", header = FALSE, sep = '\t')
hst <- as.data.frame(hs)
colnames(hstcl) <- c("city", "name")效果如下图
接下来写了一个脚本对数据做转换(其实这些用excel很容易完成,但是想锻炼写代码的能力,就...)
dataframetrans <- function(mydf){
rows <- dim(mydf)[1]
city <- NULL
x <- NULL
for (i in 1:rows){
if(mydf[i, 2] == "") {city <- mydf[i,1]
next}
city <- as.character(city)
row <- c(city, as.character(mydf[i, 2]))
x<- rbind(x, row) }
return (x)}
得到结果如下图
然后#这一步是将字符串里的不必要的文字都去掉
hstcl1[,1] <- str_remove_all(hstcl1[,1],"[0-9、()省市自治区维吾尔回族壮族]")
得到结果如下图
至此前期的数据清洗就都完成了。
接下来就是按照大神的代码加载baidumap包,获取医院的经纬度#加载baidumap 根据名称获取医院经纬度
library(baidumap)
bhs <- getCoordinate(hstcl1$name,formatted = T)
#组织清洗后的数据 hsdata <- data.frame(name=hstcl1[, 2],lon=bhs[,1],lat=bhs[,2]) result <- merge(hstcl1,hsdata,by.x="name",by.y="name") head(result)
#删除空值数据 result <- na.omit(result)
#按城市统计医院数量(分布图用到的参数) cityCount <- tapply(pdata$name,pdata$cityName,length) citydata <- data.frame(place=row.names(cityCount),values=cityCount)
#geodata stadata <- data.frame(lon=pdata$lon,lat=pdata$lat,cityname = pdata$name)
#分布图 library(REmap) output <- remapC(citydata, title = "Demo", theme = get_theme("Bright"), markPointData =stadata[,3], markPointTheme = markPointControl(symbol = "pin",effect = TRUE,symbolSize = 3,color = "red"), geoData = stadata)
show(output)得到如下
相关文章推荐
- R(四): R开发实例-map分布图
- R(四): R开发实例-map分布图
- JSON字符串反序列化为MAP对象开发实例
- 微信小程序 开发MAP(地图)实例详解
- Map开发实例
- Cocos2D-x游戏开发之十五:CCTMXTiledMap地图的基础实例
- MapGuide/Autodesk Infrastructure Map Server(AIMS)的开发实例下载
- PHP+MYSQL会员系统的开发实例教程
- 安卓开发中动态添加lsitView 代码实例【转】
- [Dask使用实例]Dask简单计算实例(map, submit)
- android Jni NDK开发环境搭建及其简单实例的编写
- iPhone/iPad 开发: 解析本地/网络上的xml文件(实例建附件)
- Chrome插件开发实例 – 时间通知(notifications)
- PHP+MYSQL会员系统的开发实例教程
- ios开发--旋转、移动、缩放手势实例代码
- IOS 陀螺仪开发(CoreMotion框架)实例详解
- [代码实例][Linux内核编程]内核开发:1、从实模式到保护模式
- 微信支付开发维权通知实例
- gsoap开发实例-查询腾讯QQ在线状态
- Android开发实战二之Hello Android实例