全文链接:http://tecdat.cn/?p=31693
原文出处:拓端数据部落公众号
最近,有一种说法:“中国经济倒退的命根子就是石油和航线”。因而,航线的重要性显而易见。
近年来,中国的航运业倒退迅速,不仅带来了经济效益和社会效益,也带来了待业岗位。因而,咱们有必要剖析航线散布情况。
为了更好地帮忙客户进行航运业务、航线设计、港口定位等决策钻研,咱们应用基于 R 语言地理信息系统的中国航线散布可视化。该办法利用地理信息系统的空间数据库治理性能,对中国各航线进行统计和剖析,并基于 R 语言统计分析工具,对剖析后果进行可视化解决,生成中国航线的空间分布图。
读取 地图绘制所需的包
以下软件包均是绘制地图相干的。
library(maptools)
library(ggplot2)
library(ggmap)
library(maps)
library(rgeos)
library(shapefiles)
library(geosphere)
library(plyr)
获取地图数据起源
航线、机场坐标
机场: airports.dat
航线: routes.dat
板块地图 、 都市地图
世界地图: ne_10m_admin_0_countries.shp
都市地图: ne_10m_urban_areas.shp
# 读取都市地图文件 读取幅员地图文件
urbanareasin <- readShapePoly("ne_0m_uranareas.shp")
worldmapsin <- readShapePol("ne_1_admin_0_countries.shp")
# 以下为格局转化
worldmap <- fortifyworldapsin)
这一部分的次要工作是将 shapefile 文件转化为 R 能够辨认的格局,而后建设数据与地图坐标间的关联。本文应用了航线频数来计算地图航线绘制的亮度。读者依据须要能够自行关联所需数据,例如老本,均匀老本,旅客人次等,以达到不同的钻研目标。
# 开始抽取机场数据
airports <- rea.table("airorts.dat", sep = ",", header = FALSE)
worldport <- airports[airpot$V5 != "", c("V3","V5","V7","V8","V9")]
names(worldprt) <- c("city", "code", "lan", "lon", "att")
有 453 条航线无标识
table(lineinworld)
summary(worldline)
统计局部国内站点的登程的航班信息
# 北京登程航班
head(worldline[worldline$AIRPORT_FROCODE=="PEK",] )
排序
e$AIRPORT_TOCDE)[2,],
decreasing = TRUE)))
北京达到航班
head(worldline[worldine$AIRPORT_TOCODE=="PEK",] )
上海登程航班
head(worldline[worlline$AIRPORTFROM_CODE=="SHA",] )
上海达到航班
head(worldline[worldline$AIRPOT_T_CODE=="SHA",] )
香港登程航班
head(worldline[worldline$ARPORT_FRO_CODE=="SHA",] )
地图旋转
这一步是对地图进行坐标变换,设置中国为世界核心,这里做了简略的坐标加减运算。
center <- 115
# 航线坐标计算中心间隔
gcircles$long.reenter <- ielse(gcicles$long < center -
因为地图是图形数据,若是简略挪动,地图会被切割,绘制时会呈现图形变形等谬误,故须要对地图数据进行再解决。该过程分为两步:
解决 1 :图形切割后,切割图形重分组。
解决 2 :重分组后,非闭合图形,闭合解决。
切割图形重分组 算法
检查组内不同经度 300 度以上 的坐标,作为极其值,而后对数据进行 均匀 。而后别离对极其值分组标号为一组,将低于300 的坐标作为一组。
闭合曲线
别离计算世界点图每个航线的起始点 起点,和航线的曲线数据 . 找到曲线数据中不间断的数据即为没有闭合的曲线 , 而后 , 将断点数据从新赋值 , 进行连贯 , 失去闭合的航线曲线 .**
g <- rep(1, length(df[, longcol]))
if (diff(rage(df[, lngcol])) > 300) {d <- df[, longcol] > mean(range(df[, longcol]))
开始写原始算法替换函数 世界地图重分组
#计算世界地图的经纬度的均值
worldmp.men <- agregate(x = wrldmap[, ("long.recenter")],
by = list(worldmap$group), FUN = mean)
#计算世界地图的经纬度的最小值
worldma.min <- aregate(= wrldmap[, c("longrecenter")],
by = list(worldmap$group), FUN = min)
#计算世界地图的经纬度的最大值
woldmap.ma <- aggregate(x worldmap[, c("long.recenter")],
by = list(wormap$group) FUN = max)
worldmap.md <- cbind(worldma.mea, worldap.in[,
2], worldap.max[, 2])
#给数据的变量名命名
colnames(worldmpmd) <- c("group", mean","min""max")
worldmapt <- join(x = worldmap, y = wolmap.md, b = c("group"))
# 闭合曲线
worlmap.rg <- orldmap.rg[order(woldm$goup.regroup,
worldmap.rg$order), ]
最初失去世界航线的曲线和坐标 (wrld) 以及城市航线的坐标 (urb), 并应用 geom_polygon 和geom_line函数进行设置 . 其色彩 粗细等。最初应用 ggplot 函数进行绘制。
urb <- geom_polygon(aes(long.recenter, lat, group = group.regroup),
size = 0.3, color = "#FDF5E6", fill = "#FDF5E6",
alpha = 1, data = urbanareas.cp)
# 放大系数
bigmap <- 1
geom_polygon(aes(lon,lat,grop = group), size = 0.2,
fill = '#f9f9', colou = 'grey6, data = worldmap) +
geom_line(aes(long.recete,lat,grup = grop.regroup, clor = freq,
alpha = freq), sie = 0.4, dat = gcicles.rg)
最受欢迎的见解
1.[](http://tecdat.cn/r%e8%af%ad%e…)R 语言动态图可视化:如何、创立具备精美动画的图
2.R 语言生存剖析可视化剖析
3.[](http://tecdat.cn/r%e8%af%ad%e…)Python 数据可视化 -seaborn Iris 鸢尾花数据
4.[](http://tecdat.cn/r%e8%af%ad%e…)r 语言对布丰投针(蒲丰投针)试验进行模仿和动静
5.R 语言生存剖析数据分析可视化案例
6.[](http://tecdat.cn/r%e8%af%ad%e…)r 语言数据可视化剖析案例:摸索 brfss 数据数据分析
7.[](http://tecdat.cn/r-%e8%af%ad%…)R 语言动静可视化:制作历史寰球平均温度的累积动静折线图动画 gif 视频图
8.[](http://tecdat.cn/r%e8%af%ad%e…)R 语言高维数据的主成分 pca、t-SNE 算法降维与可视化剖析案例报告
9.[](http://tecdat.cn/r%e8%af%ad%e…)python 主题 LDA 建模和 t -SNE 可视化