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

如何根据Edge_wt值设置网络边厚度并显示有向边及权重

有向加权网络可视化实现方案

问题说明

已成功从文件导入测试网络,但无法实现以下可视化需求:

  • 显示Source指向Target的有向边
  • 根据Edge_wt值设置边的厚度
  • 在边上显示权重数值

测试数据集:

SourceTargetEdge_wt
Air_tempBearing0.467
Wind_SpBearing0.469
M1 VibBearing0.386
M2 VibBearing0.63
Temp1Bearing0.406
Temp2Bearing0.33

实现代码(基于NetworkX + Matplotlib)

以下代码可直接实现所有需求,步骤清晰:

import networkx as nx
import matplotlib.pyplot as plt
import pandas as pd

# 1. 加载数据集(替换为你的文件路径)
df = pd.read_csv("network_data.csv")

# 2. 创建有向图并添加节点、边
G = nx.DiGraph()
for _, row in df.iterrows():
    G.add_edge(row["Source"], row["Target"], weight=row["Edge_wt"])

# 3. 计算边厚度(乘以5放大权重差异,可按需调整)
edge_widths = [G[u][v]['weight'] * 5 for u, v in G.edges()]

# 4. 绘制可视化图
plt.figure(figsize=(10, 6))
# 固定布局种子,保证每次绘图位置一致
pos = nx.spring_layout(G, seed=42)

# 绘制节点
nx.draw_networkx_nodes(G, pos, node_size=1500, node_color="#a8d1ff")
# 绘制有向边,设置箭头样式和厚度
nx.draw_networkx_edges(G, pos, width=edge_widths, arrowstyle="->", arrowsize=20, edge_color="#333333")
# 绘制节点标签
nx.draw_networkx_labels(G, pos, font_size=12, font_weight="bold")
# 绘制边权重标签(保留三位小数)
edge_labels = {(u, v): f"{G[u][v]['weight']:.3f}" for u, v in G.edges()}
nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels, font_size=10, label_pos=0.3)

plt.title("有向加权测试网络")
plt.axis("off")
plt.show()

关键细节说明

  • 用nx.DiGraph()创建有向图,确保边的方向性正确
  • 边厚度通过width参数绑定Edge_wt值,乘以系数是为了让不同权重的边厚度差异更直观
  • label_pos=0.3控制权重标签在边的位置(0为起点,1为终点),可按需调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 00:42:33