r包调用legend函数_R网络数据可视化(3)ggraph:ggplot2的网络可视化

15149674bbba9b7f844e9ace3f662c9a.png

(本文首发于个人公众号“数据与平行世界”,欢迎关注!)

(教程略长,可直接看文末函数总结)

3.1 ggraph简介:ggplot2+tidygraph

ggplot2包是R中最知名的可视化方式,它提供了结构化的图形语法。在ggplot2中,可以从各种从各种可视化构建块中进行选择,并将它们逐个添加到图形中,一次添加一层。ggplot2本身并没有提供直接进行网络可视化的工具,但是利用图形语法的思想,可以在ggplot2基础上扩展开发。

ggraph是建立在ggplot2一个扩展R包,它的目标是为网络、树和系统树等等表示关系与层次的数据结构进行可视化。ggraph继承了ggplot2的图形语法,建立了面向节点和边的新的图形对象(geom),并添加了布局的概念。这样就可以在ggplot2框架下进行更加灵活美观的网络可视化。

同时,ggraph采用tidygraph包作为数据结构和网络分析的引擎。tidygraph是对传统的igraph包的打包和扩展,目的是在R的tidyverse语法框架下进行网络数据分析。

ggraph使用tidygraph提供的tbl_graph类对象作为图形表示的数据结构,因此它可以直接支持tidygraph支持的每个对象,包括data.tree、phylo和graph等等,还可以通过as_tbl_graph()支持其他网络可视化包提供的数据对象,如igraph(igraph包)、dendrogram(stats包)、hclust(stats包)和network(network包)。不仅如此,ggraph还可以直接调用tidygraph的网络布局和网络分析算法。

建立在ggplot2和tidygraph基础上的ggraph不仅可以绘制展示节点之间关联关系的网络图,也可以绘制展示更广义的关系结构或层次结构的图形。

首先,我们来看ggraph作图的一般情况,例子是来自本系列第2篇的《权利的游戏》角色网络。

将这个网络的igraph网络对象记为net_gt,使用as_tbl_graph()将这个对象转换为ggraph所需的tbl_graph对象,然后使用dplyr包的mutate()创建两个新变量:deg表示节点的度,group表示使用infomap方法计算出的节点社区:

library(tidyverse)
library(igraph)
library(ggraph)
library(tidygraph)

graph_gt <- as_tbl_graph(net_gt) %>% 
  mutate(deg = centrality_degree(mode='in'),
          group=group_infomap())

使用autograph()进行快速可视化,得到一幅ggplot2风格的网络图(图1):

autograph(graph_gt)

1dcf1de1e76d95c6698a778f4fa7c7c3.png
图1

当然,我们需要更复杂和更美观的图形。考虑按节点度绘制节点的大小,按社区分组绘制节点颜色,对度大于12的节点标注名字,并按权重绘制边的大小(图2):

ggraph(graph_gt, layout = 'kk') + 
geom_edge_fan(aes(edge_wi
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
R语言是一种广泛应用于数据分析和统计建模的编程语言。在R语言中,可以使用多种函数来绘制大型网络图。下面是一种常用的方法: 1. 安装和加载相关:首先,需要安装并加载用于网络图绘制的,如`igraph`和`ggraph`。可以使用以下命令安装这些: ```R install.packages("igraph") install.packages("ggraph") ``` 然后,使用以下命令加载这些: ```R library(igraph) library(ggraph) ``` 2. 创建网络对象:使用`igraph`中的函数创建一个网络对象。可以使用不同的方法来定义网络的节点和边。例如,可以使用节点列表和边列表来创建网络对象。以下是一个示例: ```R # 创建节点列表 nodes <- data.frame(id = c("A", "B", "C", "D")) # 创建边列表 edges <- data.frame(from = c("A", "A", "B"), to = c("B", "C", "D")) # 创建网络对象 network <- graph_from_data_frame(d = edges, vertices = nodes, directed = FALSE) ``` 3. 绘制网络图:使用`ggraph`中的函数来绘制网络图。可以选择不同的布局算法和样式选项来定制图形的外观。以下是一个示例: ```R # 使用力导向布局算法布局网络图 layout <- create_layout(network, layout = "fr") # 绘制网络图 plot <- ggraph(layout) + geom_edge_link() + geom_node_point() + geom_node_text(aes(label = id), vjust = -1) + theme_void() # 显示网络图 plot ``` 这是一个简单的示例,你可以根据自己的需求进一步定制和调整网络图的样式和布局。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值