三种可视化方法,手把手教你用R绘制地图网络图!

作者:媒体转发 时间:2018-06-18 09:44

字号

用R绘制地图网络图

大数据文摘出品

编译:睡不着的iris、陈同学、YYY

不知道如何在地图上可视化网络图?下面这篇博客将使用R中的igraph、ggplot2或ggraph包来介绍三种在地图上可视化网络图的方法。在对地理位置以及位置的连接关系进行可视化时,还可以在图中展示一些属性。

当我们对节点(nodes)为地理位置的网络图进行可视化时,比较有效的做法是将这些节点绘制在地图上并画出它们之间的连接关系,因为这样我们可以直接看到网络图中节点的地理分布及其连接关系。

但这与传统的网络图是不同的。在传统的网络图中,节点的分布取决于使用何种布局算法(layout algorithm),有一些算法可能会使紧密联系的那些节点聚成集群。

下面将介绍三种可视化的方法。

 准备工作

首先,我们需要加载下面的库:

library(assertthat) 

library(dplyr) 

library(purrr) 

library(igraph) 

library(ggplot2) 

library(ggraph) 

library(ggmap) 

现在,让我们加载一些样本节点。我随机选取了几个国家的地理坐标。

country_coords_txt <- " 

 1     3.00000  28.00000       Algeria 

 2    54.00000  24.00000           UAE 

 3   139.75309  35.68536         Japan 

 4    45.00000  25.00000 'Saudi Arabia' 

 5     9.00000  34.00000       Tunisia 

 6     5.75000  52.50000   Netherlands 

 7   103.80000   1.36667     Singapore 

 8   124.10000  -8.36667         Korea 

 9    -2.69531  54.75844            UK 

10    34.91155  39.05901        Turkey 

11  -113.64258  60.10867        Canada 

12    77.00000  20.00000         India 

13    25.00000  46.00000       Romania 

14   135.00000 -25.00000     Australia 

15    10.00000  62.00000        Norway" 

 

# nodes come from the above table and contain geo-coordinates for some 

# randomly picked countries 

nodes <- read.delim(text = country_coords_txtheader = FALSE

                    quote = "'"sep = ""

                    ccol.names = c('id', 'lon', 'lat', 'name')) 

我们选取了15个国家作为网络图的节点,每个节点的信息包括国名、地理坐标(经度和纬度)和一个ID。现在,我将随机生成这些节点之间的连接关系:

set.seed(123)  # set random generator state for the same output 

 

N_EDGES_PER_NODE_MIN <- 1 

N_EDGES_PER_NODE_MAX <- 4 

N_CATEGORIES <- 4 

 

 

# edges: create random connections between countries (nodes) 

edges <- map_dfr(nodes$id, function(id) { 

  n <- floor(runif(1, N_EDGES_PER_NODE_MIN, N_EDGES_PER_NODE_MAX+1)) 

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
关键词 >>可视化 地图 R
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接