图与网络分析—R实现(二)
图与网络
网络在各种实际背景问题中以各种各样的形式存在。交通、电子和通讯网络遍及我们日常生活的各个方面,网络规划也广泛用于解决不同领域中的各种问题,如生产、分配、项目计划、厂址选择、资源管理和财务策划等等。 网络图为描述系统各组成部分之间的关系提供了非常有效的直观和概念上的帮助,广泛应用于科学、社会和经济活动的各个领域中。许多研究的对象往往可以用一个图表示,研究的目的归结为图的优化问题。
赋权图的R建模
赋权图是“图论”的一个基本概念,对网络问题的分析都是从赋权图开始的,特别是在经济与管理领域中有许多的应用。设*图G=(V,E),对G中的每条边[Vi,vj],相应的有一个数wij,称为边[vi,vj]上的权。G连同在它边上的权叫作赋权图。“权”是指与边有关的数量指标。根据实际问题的需要,可以赋于它不同的含意,例如表示距离、时间、流量等。
在R中,赋权图的构建有两种数据结构:
1. 从加权邻接矩阵建构赋权图
library(igraph)
#加权邻接矩阵输入
A = matrix(c(0, 0, 11, 5, 0, 0,0, 0, 9, 13, 0, 0,11, 9, 0, 9, 7, 0,5, 13, 9, 0, 15, 5,0, 0, 7, 15, 0, 9,0, 0, 0, 5, 9, 0),
nrow= 6 , ncol= 6 ,byrow = TRUE)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 0 0 11 5 0 0
[2,] 0 0 9 13 0 0
[3,] 11 9 0 9 7 0
[4,] 5 13 9 0 15 5
[5,] 0 0 7 15 0 9
[6,] 0 0 0 5 9 0
#创建一个有向图(列节点为有向边的起点)
g <- graph.adjacency(A,weighted=TRUE, mode = c("directed"))
plot(g,edge.label=E(g)$weight)
plot(g,layout=layout.reingold.tilford,edge.label=E(g)$weight)
2. 从边列次表建构赋权图
library(igraph)
#边列表输入
m <- matrix( c(1,2,6, 1,3,5, 1,4,4, 1,6,4, 3,6,4, 3,7,3, 4,7,3, 5,8,5, 6,8,4, 7,8,6) ,ncol = 3,byrow = T)
[,1] [,2] [,3]
[1,] 1 2 6
[2,] 1 3 5
[3,] 1 4 4
[4,] 1 6 4
[5,] 3 6 4
[6,] 3 7 3
[7,] 4 7 3
[8,] 5 8 5
[9,] 6 8 4
[10,] 7 8 6
#创建一个有向图
g <- make_graph(t(m[,1:2]),directed = FALSE)
#创建一个无向图
h <- make_graph(t(m[,1:2]),directed = TRUE)
graph_attr(g,'weight') <- m[,3]
plot(g,edge.label = graph_attr(g,'weight'))
邻接矩阵和边列表的转换
library(igraph)
#加权邻接矩阵输入
A = matrix(c(0, 0, 11, 5, 0, 0,0, 0, 9, 13, 0, 0,11, 9, 0, 9, 7, 0,5, 13, 9, 0, 15, 5,0, 0, 7, 15, 0, 9,0, 0, 0, 5, 9, 0),
nrow= 6 , ncol= 6 ,byrow = TRUE)
g <- graph.adjacency(A,weighted=TRUE, mode = c("undirected"))
as_data_frame(g, what="edges") #获得边列表
as_adjacency_matrix(g) #获得邻接矩阵
as_adjacency_matrix(g, attr="weight") #获得加权邻接矩阵
图与网络分析—R实现(二)的更多相关文章
- (转)Linux 系统性能分析工具图解读(一、二)
Linux 系统性能分析工具图解读(一.二) 原文:http://oilbeater.com/linux/2014/09/08/linux-performance-tools.html 最近看了 Br ...
- .NET生成小程序码,并合自定义背景图生成推广小程序二维码
前言: 对于小程序大家可能都非常熟悉了,随着小程序的不断普及越来越多的公司都开始推广使用起来了.今天接到一个需求就是生成小程序码,并且于运营给的推广图片合并在一起做成一张漂亮美观的推广二维码,扫码这种 ...
- PySide——Python图形化界面入门教程(二)
PySide——Python图形化界面入门教程(二) ——交互Widget和布局容器 ——Interactive Widgets and Layout Containers 翻译自:http://py ...
- mobile_轮播图_transform 版本_transform 读写二合一
轮播图_transform 版本 关键点: 2D 变换 transform 不会改变 元素 在 文档流 中的位置 定位 position 会改变 元素 在 文档流 中的位置 语句解析太快,使用 set ...
- python的N个小功能(图片预处理:打开图片,滤波器,增强,灰度图转换,去噪,二值化,切割,保存)
############################################################################################# ###### ...
- Wireshark网络分析工具(二)
一.TCP三次握手过称 1. 第一次握手的数据包 客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接. 如下图: 2. 第二次握手的数据包 服务器发回确认包, 标志位为 SYN ...
- Scyther攻击输出图的解释(之二)
下面对 Needham-Schroeder 协议形式化分析 的攻击输出图 做一个解释: Needham-Schroeder使用ns3表示, ns3 协议形式化描述结果如下: /* * Needham ...
- R入门<二>-时间序列研究
续之前那篇随笔 前天写完随笔后,很自豪的拿出来去跟带我入数据挖掘和SAS基础的大牛@八公炫耀,然后收获了一堆时间序列的材料,非常感谢大牛! ARIMA就是看图形,ACF和PACF,原理不需要知道,因为 ...
- Java调用R(二)_JRI
推荐使用.相比RServe更灵活,效率更高. 基本步骤 1. R中需要安装rJava包. 2. 系统变量Path加上 C:\Program Files\R\R-3.0.1\bin\i386;C:\ ...
- ArcGIS 网络分析[8] ArcObjects二次开发之底层网络分析开发
基于现有的线要素类.转弯要素类(在地理数据库的要素数据集中),要用AO做两件事: 1. 创建网络数据集(使用Geodatabase类库) 2. 执行网络分析(使用NetworkAnalyst类库) 在 ...
随机推荐
- 开始 go
为什么开始想转 go ? 毕业三年多,一直从事的是 Java , 大学学的也是 Java ,本来想一直干下去的,可是似乎 Java 水涨船高,面试要求也越来越高. 曾经一起毕业的同事自学 go ,已经 ...
- Jetpack compose学习笔记之自定义layout(布局)
一,简介 Compose中的自定义Layout主要通过LayoutModifier和Layout方法来实现. 不管是LayoutModifier还是Layout,都只能measure一次它的孩子Vie ...
- Java发送http请求携带token,使用org.nutz
发送http请求,需要携带token数据,创建Header传输 Header header = Header.create(); header.set("Authorization" ...
- RS485总线常用拓扑结构
RS485总线拓扑结构一般可分为以下4种,分别是:总线型拓扑结构.星型拓扑结构.树形拓扑结构.环形拓扑结构.根据RS485总线布线规范,只能按照总线拓扑结构布线,但是由于现场环境复杂多变,为了能够使整 ...
- linux关于文件的创建方式
1:文件的创建方式: mkdir 用于创建目录: 语法: mkdir -p 目录名 举例:创建一个在run目录下的一个demo目录: 可以写成: mkdir /run/demo 亦可以写成 mk ...
- 变量调用分析——这个ball到底是那个ball?
public class Ball implements Rollable{ public static void main(String[] args) { Ball ball = new Ball ...
- 什么是js柯里化(curry)?
在数学和计算机科学中,柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术. 举例来说,一个接收3个参数的普通函数,在进行柯里化后,柯里化版本的函数接收一个参数并返回接收下一个参数 ...
- HTML笔记(二) HTML标签元素
一 常用的头部元素标签 <head>元素包含了所有的头部标签元素. 1.<title> <title>标签定义了HTML文档的标题,在HTML/XHTML文档中是必 ...
- 快速乘_c/c++
快速乘的使用主要是这种情形:要计算(a * b) % p时,发现a * b爆 long long 了,而a, b, p没有爆 long long 快速乘的原理: 比如当我们需要要计算3 * 2 ...
- verilog 概念版
一.MCU芯片的定义 MCU芯片是指微控制单元(MicrocontrollerUnit:MCU),又称单片微型计算机或者单片机,是把中央处理器的频率与规格做适当缩减,并将内存.计数器.USB.A/D转 ...