如何将dot的图形属性添加到最终的点输出中

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)