igraph学习笔记(1)

普通有向(无向)图(无向图改成F即可)

 >g1=graph(c(1,2,1,3),directed=T)
 >plot(g1)
igraph学习笔记(1)_第1张图片
简单有向图

画基本图:

> g2=graph.full(4)
> plot(g2)
igraph学习笔记(1)_第2张图片
基本图

画环状图:

> g3=graph.ring(4)
> plot(g3)
igraph学习笔记(1)_第3张图片
环状图

合并两个图:

> gc=g3%du%g2
> plot(gc)
igraph学习笔记(1)_第4张图片
合并环状图与基本图

求两个图的差异:

> dif=graph.difference(gc,graph(c(1,2,1,3),directed=F))
> plot(dif)
> dif
IGRAPH U--- 8 9 -- 
+ attr: name_1 (g/c), name_2 (g/c), mutual (g/l), circular (g/l),
| loops (g/l)
+ edges:
[1] 1--4 2--3 3--4 5--8 5--7 5--6 6--8 6--7 7--8
> 
igraph学习笔记(1)_第5张图片
求两图差异

这里我没有把gcg1作比较,因为出错了,在问题(2)。同时我把两个图的差异信息输出了。

遇到问题:
(1)无效的(负值)节点ID。

> g3=graph(c(0,1,0,2),directed=T)
Error in .Call("R_igraph_create", as.numeric(edges) - 1, as.numeric(n),  : 
  At structure_generators.c:84 : Invalid (negative) vertex id, Invalid vertex id

把(0,1,0,2)中的0改成大于0的值即可。

(2)不能把有向图和无向图相减

>dif=graph.difference(gc,g1,directed=F)
Error in .Call("R_igraph_difference", big, small, PACKAGE = "igraph") : 
  At operators.c:943 : Cannot subtract directed and undirected graphs, Invalid value

即不能将两者作比较。于是上面我把g1用无向图graph(c(1,2,1,3),directed=F)代替了

你可能感兴趣的:(igraph学习笔记(1))