BPL*_*BPL 2 python graph networkx
我得到了这个代码,它允许我绘制如下面发布的图表
import networkx as nx
import pylab as plt
from networkx.drawing.nx_agraph import graphviz_layout
G = nx.DiGraph()
G.add_node(1,level=1)
G.add_node(2,level=2)
G.add_node(3,level=2)
G.add_node(4,level=3)
G.add_edge(1,2)
G.add_edge(1,3)
G.add_edge(2,4)
nx.draw(G, pos=graphviz_layout(G), node_size=1600, cmap=plt.cm.Blues,
node_color=range(len(G)),
prog='dot')
plt.show()
Run Code Online (Sandbox Code Playgroud)
问题是,我怎么能用以下节点绘制图形:
类似于下图的东西
正如您在该图像中看到的那样,节点非常好地对齐
Ari*_*ric 10
由于您有Graphviz,您可以使用它来制作漂亮的图纸并控制图纸的元素.'dot'布局引擎可以很好地定位像你的例子中的有向图.例如
import networkx as nx
import pylab as plt
from networkx.drawing.nx_agraph import graphviz_layout, to_agraph
import pygraphviz as pgv
G = nx.DiGraph()
G.add_node("A",rank=0)
G.add_nodes_from(['B','C','D'],style='filled',fillcolor='red')
G.add_nodes_from(['D','F','G'])
G.add_nodes_from(['H'],label='target')
G.add_edge('A','B',arrowsize=2.0)
G.add_edge('A','C',penwidth=2.0)
G.add_edge('A','D')
G.add_edges_from([('B','E'),('B','F')],color='blue')
G.add_edges_from([('C','E'),('C','G')])
G.add_edges_from([('D','F'),('D','G')])
G.add_edges_from([('E','H'),('F','H'),('G','H')])
# set defaults
G.graph['graph']={'rankdir':'TD'}
G.graph['node']={'shape':'circle'}
G.graph['edges']={'arrowsize':'4.0'}
A = to_agraph(G)
print(A)
A.layout('dot')
A.draw('abcd.png')
Run Code Online (Sandbox Code Playgroud)
产生输出
strict digraph {
graph [rankdir=TD];
node [label="\N",
shape=circle
];
A [rank=0];
C [fillcolor=red,
style=filled];
A -> C [penwidth=2.0];
B [fillcolor=red,
style=filled];
A -> B [arrowsize=2.0];
D [fillcolor=red,
style=filled];
A -> D;
C -> E;
C -> G;
B -> E [color=blue];
B -> F [color=blue];
D -> G;
D -> F;
H [label=target];
E -> H;
G -> H;
F -> H;
}
Run Code Online (Sandbox Code Playgroud)
由dot渲染为
您可以在http://www.graphviz.org/doc/info/attrs.html上阅读有关可调节绘图参数的信息
| 归档时间: |
|
| 查看次数: |
9281 次 |
| 最近记录: |