首页
社区
课程
招聘
未解决 [求助]我是一名Python初学者,在有关传统五行网络建模分析项目上,遇到代码报错问题 10雪币
发表于: 2025-12-13 13:32 547

未解决 [求助]我是一名Python初学者,在有关传统五行网络建模分析项目上,遇到代码报错问题 10雪币

2025-12-13 13:32
547
import networkx as nx
from pyvis.network import Network
# 1. 核心:五行节点
five_elements = ["木", "火", "土", "金", "水"]
# 2. 基础关系边(用列表存储(起点, 终点,关系类型, 权重))
base_edges = [
# 生关系
    ("木", "火","生", 1.0),
    ("火", "土","生", 1.0),
    ("土", "金","生", 1.0),
    ("金", "水","生", 1.0),
    ("水", "木","生", 1.0),
 # 克关系(含"木→土")   
    ("木", "土","克", -0.5),
    ("土", "水","克", -0.5),
    ("水", "火","克", -0.5),
    ("火", "金","克", -0.5),
    ("金", "木","克", -0.5),
# 泄关系(生关系的反向,属于正向弱干扰)   
    ("火", "木","泄", 0.5),
    ("土", "火","泄", 0.5),
    ("金", "土","泄", 0.5),
    ("水", "金","泄", 0.5),
    ("木", "水","泄", 0.5),
 # 耗关系(克关系的反向,如"土→木")   
    ("土", "木","耗", -0.8),  # 若同一对节点有多个关系,后续可拆分为多条边
    ("土", "金","耗", -0.8),
    ("金", "火","耗", -0.8),
    ("火", "水","耗", -0.8),
    ("水", "木","耗", -0.8)]
# 3. 初始化有向图
G = nx.DiGraph()
# 4. 添加核心节点(可给节点加“维度”属性,比如核心节点标为“核心-五行”)
for elem in five_elements:
    G.add_node(elem, category="核心-五行", color="#FF6B6B")  # 节点颜色自定义

# 5. 添加基础关系边:遍历列表(边的属性、关系类型、权重)
for start, end, rel_type, weight in base_edges:
    # 给不同关系边设不同颜色,方便区分
    edge_color = "#4ECDC4" if weight > 0 else "#FF9F43"  
    G.add_edge(
        start, end, 
        relationship=rel_type, 
        weight=weight, 
        color=edge_color,
        width=abs(weight)*2  
    )
# 6. 动态可视化有向图(生成HTML文件,打开后可拖拽节点、hover看属性)
net = Network(notebook=False, directed=True, height="800px", width="100%")
net.from_nx(G) 
# 调整节点标签显示(hover时显示“节点名+类别+边属性”)
for node in net.nodes:
    node["title"] = f"节点:{node['id']}\n类别:{node['category']}"
for edge in net.edges:
    start = edge["from"]
    end = edge["to"]
    nx_edges = G.get_edge_data(start, end)  # 取同一对节点的所有边
    edge_attr=next(iter(nx_edges.values())
    edge["title"]=f"""关系:
    {edge_attr['relationship']}
    \n权重: {edge_attr['weight']}"""
 
# 保存并打开动态图
net.save_graph("五行核心基础网络.html")
print("基础网络已生成,打开HTML文件查看动态效果!")

以上是我的完整代码,语法、格式错误位置,已用三行引号换行,但未解决f-string语法的 f会被系统误认为字符串问题:

问题位置:

edge['title'] = f"""关系: {edge_attr['relationship']}
\n权重: {edge_attr['weight']}"""

你们看,无论如何调整,都会有报错提示,以下是首次报错提示:

Traceback (most recent call last):
  File "C:\Users\85848\OneDrive\文档\五行模型基本网络框架.py", line 63, in <module>
    net.from_nx(G, edge_attrs=["relationship", "weight", "color", "width"])
TypeError: Network.from_nx() got an unexpected keyword argument 'edge_attrs'

你看我该怎么办?


我还得接着用多层嵌套字典处理40+边缘关系节点,虽然它只有五个核心……但是对于Python初学者来说,还是很难……



[培训]Windows内核深度攻防:从Hook技术到Rootkit实战!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回