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

如何在NetworkX绘制的图中设置垂直显示的边权重标签?

让NetworkX边标签垂直显示的解决方案

嘿,我明白你想把有向图里的边权重标签改成垂直显示的需求啦!其实只需要在绘制边标签的时候调整几个参数就能搞定,下面结合你的代码给你具体的实现方法:

首先先把你没写完的代码补全(假设剩下的边也是类似的权重设置),然后关键是用nx.draw_networkx_edge_labels()函数时,设置**rotation=90**参数来让标签垂直旋转,同时可以调整标签位置避免重叠。

修改后的完整代码

import networkx as nx
import matplotlib.pyplot as plt

# 创建有向图
G = nx.DiGraph()
# 添加节点及位置
G.add_node('A', pos=(0, 100))
G.add_node('B', pos=(2, 50))
G.add_node('C', pos=(-2, 50))
G.add_node('D', pos=(0, 40))
G.add_node('E', pos=(1, 10))
G.add_node('F', pos=(-1, 10))
G.add_node('G', pos=(0, -50))
# 添加边及权重
G.add_edges_from([('A', 'B'), ('A', 'C'), ('B', 'D'), ('C', 'D'), 
                  ('D', 'E'), ('D', 'F'), ('E', 'G'), ('F', 'G')], weight=1)

# 获取节点位置
pos = nx.get_node_attributes(G, 'pos')

# 绘制节点和边
nx.draw(G, pos, with_labels=True, node_color='lightblue', node_size=800, font_size=12)

# 绘制垂直显示的边权重标签
edge_labels = nx.get_edge_attributes(G, 'weight')
nx.draw_networkx_edge_labels(
    G, pos,
    edge_labels=edge_labels,
    rotation=90,  # 核心参数:让标签旋转90度,垂直显示
    label_pos=0.3,  # 调整标签在边上的位置(0是起点,1是终点)
    font_size=10,
    font_color='red'  # 可选:设置标签颜色,更醒目
)

plt.show()

关键参数解释

  • rotation=90:这是让标签垂直显示的核心,把标签旋转90度变成纵向排列。如果你想让标签倒过来显示,可以设为270。
  • label_pos:控制标签在边的哪个位置显示,0对应起点,1对应终点,0.5是中间。根据你的图结构调整这个值,能避免标签和节点、边重叠。
  • font_size/font_color:可选参数,用来调整标签的大小和颜色,提升可读性。

这样运行代码后,所有边的权重标签就会垂直显示啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:13:22