use*_*027 6 python graph dot graphviz networkx
我在python项目中使用NetworkX库创建图形表示.制作有向图我需要在图输出中添加一个属性:rankdir = LR
所以我正在编写代码:
import networkx as nx
graph = nx.DiGraph(rankdir="LR")
#adding deps based on our database data
add_deps(graph)
dot_file_path = "some/path/to/dots.gv"
nx.write_dot(graph, dot_file_path)
Run Code Online (Sandbox Code Playgroud)
所以,最后一个字符串生成带有下一个内容的点文
strict digraph {
"Writing letters" [URL="/admin/materials/theme/213/",
shape=box,
target=blank];
"Finishing the Business English course" [URL="/admin/materials/theme/221/",
color=red,
shape=box,
style=filled,
target=blank];
"Writing letters" -> "Finishing the Business English course";
...
}
Run Code Online (Sandbox Code Playgroud)
虽然我希望属性"rankdir = LR"的代码将附加到图形输出:
strict digraph {
rankdir=LR;
"Writing letters" [URL="/admin/materials/theme/213/",
shape=box,
target=blank];
"Finishing the Business English course" [URL="/admin/materials/theme/221/",
color=red,
shape=box,
style=filled,
target=blank];
"Writing letters" -> "Finishing the Business English course";
...
}
Run Code Online (Sandbox Code Playgroud)
但这并没有发生,似乎write_dot()方法没有把图形属性.有人可以帮我提一下通过networkx添加图形属性的正确方法吗?
Ari*_*ric 12
它没有很好的记录.您可以添加默认的"图形"属性,如下所示:
In [1]: import networkx as nx
In [2]: G = nx.DiGraph()
In [3]: G.add_edge(1,2)
In [4]: G.graph['graph']={'rankdir':'LR'}
In [5]: import sys
In [6]: nx.write_dot(G, sys.stdout)
strict digraph {
graph [rankdir=LR];
1 -> 2;
}
Run Code Online (Sandbox Code Playgroud)