【发布时间】:2019-12-22 00:59:58
【问题描述】:
如果我使用 networkx 创建树并绘制它,节点会重叠。有没有办法画出来不重叠?
import matplotlib.pyplot as plt
import networkx as nx
T = nx.generators.balanced_tree(2, 5)
nx.draw(T)
plt.show()
【问题讨论】:
标签: python matplotlib networkx
如果我使用 networkx 创建树并绘制它,节点会重叠。有没有办法画出来不重叠?
import matplotlib.pyplot as plt
import networkx as nx
T = nx.generators.balanced_tree(2, 5)
nx.draw(T)
plt.show()
【问题讨论】:
标签: python matplotlib networkx
我不是这方面的专家,但这里的代码使用了 pydot 库及其 graph_viz 依赖项。这些库随 Anaconda Python 一起提供,但默认情况下未安装,因此首先从命令提示符处执行此操作:
conda install pydot
那么这里是改编自Circular Tree的代码。
import matplotlib.pyplot as plt
import networkx as nx
import pydot
from networkx.drawing.nx_pydot import graphviz_layout
T = nx.balanced_tree(2, 5)
pos = graphviz_layout(T, prog="twopi")
nx.draw(T, pos)
plt.show()
如果你把窗口调整成正方形,结果是
或者,如果您更喜欢自上而下的树,您可以将该代码中的字符串 "twopi" 替换为 "dot",如果您使生成的窗口更宽,您会得到
另外,如果你改用字符串"circo" 并使窗口变宽,你会得到
【讨论】:
如果您想在没有其他库的情况下执行此操作,请查看此答案,该答案显示了一种纯粹在 networkx 中获得分层树布局或圆形布局的方法:
https://stackoverflow.com/a/29597209/2966723
我计划在不久的某个时候将这个稍微修改的版本添加到 networkx。
【讨论】: