【发布时间】:2021-05-18 23:33:18
【问题描述】:
我正在使用 networkx (v2.5) 来解决依赖性分析问题,并在 ubuntu 20.04 上通过 graphviz / pygraphviz (v1.7) 可视化数据。每个节点的内容(label 字段)是一个代码块 - 所以我希望它左对齐。问题是我似乎无法更改默认值(中心对齐)。
X/Y: - 我的具体需要是从 networkx 图表中创建一个 png,其中节点文本左对齐 - 我相信 Graphviz /pygraphviz 是最好的~简单的方法——但任何 FOSS 方法都可以做到这一点。
我通过下面的简化代码成功生成了一个png,但文本都是居中对齐。
from networkx import DiGraph, nx_agraph
from networkx.drawing.nx_agraph import write_dot
# graph is created via networkx:
graph = DiGraph()
graph.add_edge("node1", "node2")
graph.nodes["node1"]["label"] = get_code_sniped("node1")
# ...
# and converted / output to dot & png via (internally) pygraphviz
write_dot(graph, "/tmp/foo.dot") # appears correctly output
a_graph = nx_agraph.to_agraph(graph)
a_graph.layout(prog="dot")
# attempt to add attrs per defs in
# https://www.graphviz.org/doc/info/attrs.html#d:labeljust
a_graph.graph_attr.update(labeljust="l") # <----- has no effect on output
a_graph.graph_attr.update(nojustify=True) # <-/
a_graph.draw("/tmp/foo.png") # <-- PNG outputs successfully,
# but all node text is CENTER justified
如何修改从我的networkx 图形生成的 PNG 中的节点文本(特别是左对齐)?
【问题讨论】:
标签: python networkx graphviz pygraphviz