论坛首页 蓝队防御建设区 阅读主题

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

424 浏览 0 回复
#1 楼主 2026-06-01 21:09:03
import networkx as nxfrom 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初学者来说,还是很难……

---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-289427.htm

暂无回复,快来抢沙发吧!

请登录后参与讨论

立即登录 注册账号