networkx 之node edge

本文详细介绍了使用Python的NetworkX库进行图节点操作的方法,包括添加单个节点、批量添加节点、清除节点以及从其他图中添加节点的过程。同时,展示了如何通过NetworkX创建加权图,并遍历图中边的权重。

1:node

>>> import networkx as nx
>>> G=nx.Graph()
>>> G.add_node(1)
>>> G.add_nodes_form([2,5])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Graph' object has no attribute 'add_nodes_form'
>>> G.add_nodes_from([2, 3])
>>> G.add_nodes_from([4, 5])
>>> G.add_nodes_from([6, 8])
>>> G.node
NodeView((1, 2, 3, 4, 5, 6, 8))
>>> G.clear()
>>> G.node
NodeView(())
>>> H=nx.path_graph(10)
>>> G.add_nodes_from(H)
>>> G.node
NodeView((0, 1, 2, 3, 4, 5, 6, 7, 8, 9))
>>> G.clear()
>>> G.node
NodeView(())

2;

import networkx as nx
import matplotlib.pyplot as plt
FG = nx.Graph()
FG.add_weighted_edges_from([(1, 2, 0.125), (1, 3, 0.75), (2, 4, 1.2), (3, 4, 0.375)])
for n, nbrs in FG.adj.items():
   for nbr, eattr in nbrs.items():
       wt = eattr['weight']
       if wt < 0.5: print('(%d, %d, %.3f)' % (n, nbr, wt))
for n,nbrs in FG.adj.items():
    for nbr,eattr in nbrs.items():
        wt=eattr['weight']
        if wt<0.5: 
               print('(%d ,%d ,%.3f)' % (n,nbr,wt))

 

### 如何使用 NetworkX Python 库 #### 创建图并添加节点和边 为了开始使用 `NetworkX` 进行图的操作,首先需要安装该库。可以通过 pip 安装命令轻松完成此过程: ```bash pip install networkx ``` 接着,在代码中导入 `networkx` 并创建一个新的无向图对象。 ```python import networkx as nx G = nx.Graph() ``` 在此基础上,可以向图中添加单个节点或一系列节点以及它们之间的连接关系——即边[^2]。 ```python # 添加单一节点 G.add_node(1) # 或者批量添加多个节点 nodes_to_add = [2, 3, 4] G.add_nodes_from(nodes_to_add) # 同样适用于边 edges_to_add = [(1, 2), (1, 3)] G.add_edges_from(edges_to_add) ``` #### 探索图中的元素 一旦构建好了一个简单的图结构之后,就可以通过访问其内部组件来进行进一步的研究工作了。比如查看当前存在的所有节点及其相连情况。 ```python print("Nodes:", list(G.nodes)) print("Edges:", list(G.edges)) for node in G.neighbors(1): # 获取指定节点的所有相邻节点 print(f"Node {node} is connected to Node 1.") ``` 对于更复杂的属性管理需求,则允许给定特定标签来描述每一个组成部分;这不仅限于字符串形式还可以是任意类型的Python对象。 ```python # 设置全局默认权重为距离度量 nx.set_edge_attributes(G, values=1.0, name='weight') # 对个别实例单独赋值 G.nodes[1]['label'] = 'Start Point' G.edges[(1, 2)]['distance'] = 5.4 ``` #### 高级功能探索 除了基础操作外,`NetworkX` 提供了许多高级特性支持复杂网络分析任务,如计算最短路径长度、寻找连通分量等实用工具函数[^3]。 ```python shortest_path_length = dict(nx.shortest_path_length(G)) # 计算两两点间最短路径长度 connected_components = list(nx.connected_components(G)) # 寻找所有的弱联通子集 ``` 最后但同样重要的是可视化部分。虽然内置绘图方法简单易用,但对于定制化展示效果而言可能不够灵活。这时推荐结合其他第三方图形处理包一起使用,例如 Matplotlib 来增强表现力。 ```python import matplotlib.pyplot as plt pos = nx.spring_layout(G) # 布局算法选择之一 nx.draw_networkx_labels(G, pos=pos) nx.draw(G, pos, with_labels=True, font_weight='bold') plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值