You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用networkx绘制根在右侧的从左到右横向树结构?

要实现根节点位于右侧的横向树布局,只需给graphviz_layout方法新增rankdir="RL"参数即可,dot布局程序原生支持该参数控制树的排列方向。
修改后的完整代码如下:

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)

for line in nx.generate_adjlist(T):
    print(line)

# 新增rankdir参数指定布局方向,RL表示从右到左排列,根节点在最右侧
pos = graphviz_layout(T, prog="dot", rankdir="RL")
nx.draw(T, pos, node_color="y", edge_color='#909090', node_size=200, with_labels=True)

plt.show()

参数补充说明

rankdir支持4种取值,可按需选择:

  • rankdir="TB":默认值,从上到下排列,根在顶部,即原代码效果
  • rankdir="BT":从下到上排列,根在底部
  • rankdir="LR":从左到右排列,根在左侧
  • rankdir="RL":从右到左排列,根在右侧,符合本次需求

如果你不想依赖graphviz的布局参数,也可以手动转换坐标实现同样效果:

pos = graphviz_layout(T, prog="dot")
# 交换x、y坐标并翻转x轴实现右根横向布局
pos = {node: (-y, x) for node, (x, y) in pos.items()}

内容的提问来源于stack exchange,提问作者Simd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:06:05