nan.xiao <br /> require(igraph)<br /> d = data.frame(p1 = c('a', 'b', 'c'),<br /> p2 = c('b', 'c', 'a'),<br /> weight = c(1, 2, 4))<br /> g = graph.data.frame(d, directed = TRUE)<br /> plot(g, edge.width = E(g)$weight)<br /> </p>
jacklu 回复 第2楼 的 肖楠:请问版主,你是怎么找到 “edge.width = E(g)$weight” 用法的? 我在R中搜索igraph帮助,没有找到这种使用的说明,请问你是如何查找,以什么为关键词查找的? 我是一个R fresher,谢谢!
zggjtsgzczh A vertex sequence is created by V(g) this selects are vertices in increasing vertex id order. E(g) selects all edges from the ‘g’ graph. ?iterators igraph是 dot 的R绘图包?
nan.xiao 回复 第6楼 的 zggjtsgzczh: igraph 是一个独立的库,底层是 C,上层有 Python 和 R 接口,主要做图和网络方面的计算,附带绘图功能。 支持 dot 语言的绘图包是 Bioconductor 项目中的 Rgraphviz,当然也可以在 R 中使用。
MRQ1023 请问用igraph画网络图的时候,怎么加上标签?我加上标签之后节点都被标签覆盖掉了,什么都看不清~比如怎么才能把标签放在节点里面?还有我画的图感觉有点挤,怎么才能使图中各节点之间的距离变大一些?也就是有没有什么方法能优化图形的?先谢过了
nan.xiao 回复 第9楼 的 MRQ1023: 1. 分辨率有限的情况下,标签太多的话是展示不了的,即使强行展示,图形看起来也会非常糟糕。比较好的方式是做成交互式的(比如 D3.js ),光标移上去时可以显示相关标签,其他时候隐藏。 2. 这个就需要布局算法了,这方面 AT&T 的 yifan hu 做了不少工作,其中一些算法在 Gephi 中有实现。或者修改整体的布局形式,circular layout 或者 linear layout 都可以。
to close your eyes 回复 第4楼 的 jacklu:http://igraph.sourceforge.net/doc/R/00Index.html 这个网页里的内容在你的电脑里也有。
yimengchangh 回复 第14楼 的 肖楠: 肖老师,你好。 我试着用你的代码运行很大的一个数据,结果很糟糕,看了你给的链接还是没明白,所以请问下…… 1. 如何只显示P1的label而不显示P2的呢? 2. P1相同的数据很多,如a对应的b的关系很多,在图上会显示很多个点,怎么合并a让其只显示一个点呢? 非常感谢,初学不是很明白。也关注了你的 数据科学与R语言 网站,特别是飞机航班那个,有的代码完全看不懂……
superdesolator 最近要做复杂网络的问题分析,找到了igraph这个包,初初看了下觉得很好,基本上很多图论和网络的东西都有相应的函数实现,作图貌似也蛮好,不过正如12楼说的有些函数无法使用:我遇到的一个就是degree.distribution(),就是一个图的度分布,不知道哪里有最新的文档介绍?