作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想用我拥有的数据可视化一个网络,并想用特定的边长来绘制它们。我使用 Python,我尝试过 networkx 和 igraph 来绘制,但似乎都分配了固定的边长。
a.) 我想知道我是不是代码写错了,或者这些包真的没有能力。您如何为 networkx 或 igraph 正确实现指定的边长?
b.) 如果 networkx 和 igraph 做不到,您可以推荐什么包? (最好能承载8万个节点以上。)
谢谢!
最佳答案
这应该有效:
import networkx as NX
import pygraphviz as PG
G = PG.AGraph()
nlist = "A B C D E".split()
a, b = "A A B", "B C D"
elist = zip(a.split(), b.split())
G.add_nodes_from(nlist)
G.add_edges_from(elist)
G.node_attr.update(color="red", style="filled")
G.edge_attr.update(color="blue", len="2.0", width="2.0")
print(G.edge_attr)
# returns {'color': 'red', 'width': '', 'len': '2.0'}
# add new edge with custom length (all others have length=2.0):
G.add_edge("C", "E", len="3.0", color="blue", width="2.0")
edge = G.get_edge("C", "E")
print(edge_attr)
# returns {'color': 'blue', 'width': '2.0', 'len': '3.0'}
# and you can confirm that introspection by drawing & printing this graph:
G.draw('somefolderandfilename.png', format='png', prog='neato')
大多数图形绘制算法都使用某些版本的 SMACOF,这当然会改变边长;然而,graphviz 布局引擎“neato”(作为上面“draw”的第二个参数提供)应该尽可能保留用户设置的边长。
我在这里使用的库当然足够坚固,可以处理 80,000 个节点。
关于python - networkx/igraph (Python) 上的指定边长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1851296/
有没有办法设置networkx图中的边长度?例如,我有以下代码,设置第一条边长度=10,第二条边长度=1,但它们在实际图中具有相同的长度: >>> import matplotlib.pyplot a
我是一名优秀的程序员,十分优秀!