我想用NetworkX或多或少地复制下面的图(摘自F.Crick,Nature 227561(1970)):
我可以使用MultiDiGraph
复制底层图形:
import networkx as nx
g = nx.MultiDiGraph()
weakEdges = [('RNA', 'DNA'), ('RNA', 'RNA'), ('RNA', 'protein')]
strongEdges = [('DNA', 'DNA'), ('DNA', 'RNA'), ('DNA', 'protein')]
g.add_edges_from(weakEdges)
g.add_edges_from(strongEdges)
但显然,内置的matplotlib绘图不支持并行边,因为这是正确的多重图所需要的。在
另一方面,我可以将g
转换为PyGraphvizAGraph
,并绘制出:
这与我想要的非常接近,但我很难弄清楚一些更精细的细节:
使用circo
布局,是否可以将“DNA”节点置于图的顶部?如果没有,如何控制每个节点的绝对位置?
如何调整自身边缘(例如“DNA”->;“DNA”边缘)的位置,使其更接近原始图形中的边缘?
一个简单的Graphviz/dot语法的小设置(将其输入http://www.webgraphviz.com/并可以看到结果):
基本部件如下:
:n
获取阵列的位置(其他可能是其他风向,包括:nw
)。在rank=same;
在一行中对齐提到的节点相关问题 更多 >
编程相关推荐