未加星标

莆田医院的可视化(R语言版)

字体大小 | |
[商业智能 所属分类 商业智能 | 发布者 店小二05 | 时间 | 作者 红领巾 ] 0人收藏点击收藏

莆田医院的可视化(R语言版)

Idea来自于这里原文作者用python完成了数据爬取,可视化的过程,本文用R实现一遍...


基本的流程如下:


爬取数据与整理

根据医院获取经纬度

根据获取的经纬度完成可视化

数据爬取与整理

数据来源于凤凰资讯,由于数据隐藏在JS代码中,所以我们使用readLines读取,字符处理的方式获得数据.


莆田医院的可视化(R语言版)

raw = readLines("http://news.ifeng.com/mainland/special/ptxyy/",

encoding = "UTF-8")

rawHospital = raw[123 : 238] rawHospital[1] [1] " ['上海','上海市闵行区中医院<br/>上海华美美莱整形医院<br/>上海万众医院<br/>上海安真医院<br/>上海福华医院<br/>上海玛丽女子医院<br/>上海真爱女子医院<br/>上海心脏病医院<br/>上海远大心胸医院<br/>上海仁爱医院<br/>上海天大医疗美容医院<br/>上海沪申五官科医院<br/>上海博爱医院<br/>上海新虹桥医院<br/>上海九龙男子医院<br/>上海城市女子医院<br/>上海西郊骨科医院<br/>上海真美妇科医院<br/>上海南浦妇科医院<br/>上海虹桥医院<br/>上海健桥医院<br/>上海博爱医院<br/>上海长江医院<br/>解放军411医院<br/>上海阳光中医医院<br/>上海英港泌尿外科医院<br/>上海阿波罗男子医院<br/>上海玫瑰女子医院<br/>上海康新医院<br/>上海圣爱医院<br/>上海同德医院<br/>上海安平医院<br/>江东泌尿外科医院<br/>上海九州泌尿医院<br/>上海青城医院<br/>上海博大医院<br/>上海中亚医院','38'],"

接下来,用一个函数提取每个rawHospital中的医院名,并整理成一个字符向量.


extFun = function(x){

split = strsplit(x, "','")

out = strsplit(split[[1]][2], "<br/>")

return(out)

}

extFun(rawHospital[1])

hosList = sapply(rawHospital,extFun)

hospital = c()

for(i in 1:length(hosList)) hospital = append(hospital, hosList[[i]])

head(hospital)

[1] "上海市闵行区中医院" "上海华美美莱整形医院" [3] "上海万众医院" "上海安真医院" [5] "上海福华医院" "上海玛丽女子医院"

获取经纬度

获取经纬度使用某大神的baidumaprepo在这里(不要纠结为啥还用百度,可视化也是...)


library(baidumap)

blackHospital = getCoordinate(hospital, formatted = T)

blackHospital = na.omit(blackHospital)

head(blackHospital)

longtitude latitude

上海市闵行区中医院 121.4250 31.09354

上海华美美莱整形医院 121.4290 31.23277

上海万众医院 121.4267 31.19537

上海安真医院 121.2353 31.00906

上海福华医院 121.7532 31.04560

上海玛丽女子医院 121.1253 31.15449

完成了,有一个医院经纬度没找到,用na.omit删去,稍微整理一下:


plotdata = data.frame(lon = blackHospital[,1], lat = blackHospital[,2],

city = rownames(blackHospital))

可视化

不好意思,只会REmap,代码见下,用鼠标滚轮和拖动查看细节:


library(REmap)

remapB(markPointData = data.frame(plotdata$city),

markPointTheme = markPointControl(symbol = "pin",

effect=F,

symbolSize = 5,

color="red"),

geoData = plotdata)



莆田医院的可视化(R语言版)

最后,把所有的代码放在一起,方便大家调用(顺便我可以数一下有几行,不到30,啧啧啧)


##获取数据

raw = readLines("http://news.ifeng.com/mainland/special/ptxyy/",

encoding = "UTF-8")

rawHospital = raw[123 : 238]

## 数据整理

extFun = function(x){

split = strsplit(x, "','")

out = strsplit(split[[1]][2], "<br/>")

return(out)

}

extFun(rawHospital[1])

hosList = sapply(rawHospital,extFun)

hospital = c()

for(i in 1:length(hosList)) hospital = append(hospital, hosList[[i]])

## 获取经纬度

library(baidumap)

blackHospital = getCoordinate(hospital, formatted = T)

blackHospital = na.omit(blackHospital)

plotdata = data.frame(lon = blackHospital[,1], lat = blackHospital[,2],

city = rownames(blackHospital))

## 绘制地图

library(REmap)

remapB(markPointData = data.frame(plotdata$city),

markPointTheme = markPointControl(symbol = "pin",

effect=F,

symbolSize = 5,

color="red"),

geoData = plotdata)


欢迎加入本站公开兴趣群

商业智能与数据分析群

兴趣范围包括各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识

QQ群:418451831

tags: #160,gt,lt,br,医院,上海,blackHospital,hospital,rawHospital,hosList,plotdata,extFun,经纬度
分页:12
转载请注明
本文标题:莆田医院的可视化(R语言版)
本站链接:https://www.codesec.net/view/425701.html


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 商业智能 | 评论(0) | 阅读(284)