igraph学习笔记(1)

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

 >g1=graph(c(1,2,1,3),directed=T)
 >plot(g1)
简单有向图

画基本图:

> g2=graph.full(4)
> plot(g2)
基本图

画环状图:

> g3=graph.ring(4)
> plot(g3)
环状图

合并两个图:

> gc=g3%du%g2
> plot(gc)
合并环状图与基本图

求两个图的差异:

> 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
> 
求两图差异

这里我没有把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)代替了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容