-
-
未解决 [求助]我是一名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实战!
赞赏
谁下载
无
谁下载
无
赞赏
雪币:
留言: