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

本文介绍了如何使用R中的igraph、ggplot2和ggraph包在地图上绘制网络图,通过实例展示了如何在地图上可视化地理位置及连接关系,并提供了详细步骤和代码,适用于地理分布的网络图可视化需求。
摘要由CSDN通过智能技术生成

不知道如何在地图上可视化网络图?下面这篇博客将使用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_txt, header = FALSE,


 quote = "'", sep = "",


 col.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))


 to <- sample(1:max(nodes$id), n, replace = FALSE)


 to <- to[to != id]


 categories <- sample(1:N_CATEGORIES, length(to), replace = TRUE)


 weights <- runif(length(to))

 data_frame(from = id, to = to, weight = weights, category = categories)

})





edges <- edges %>% mutate(category = as.factor(category))

这里每条边均通过from列和to列里的节点ID来确定节点之间的连接关系。此外,我们生成随机连接关系的类型和强度。这些属性通常用于图表分析,之后也可以被可视化。

这样我们的节点和边就充分表现了图的内容。现在我们可以用igraph库生成一个图结构g,这对于以后快速计算每个节点的等级或其他属性尤为必要。

g <- graph_from_data_frame(edges, directed = FALSE, vertices &#
  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值