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

根据x、y坐标范围提取NetworkX子图的最高效方法是什么?

NetworkX按坐标范围提取子图方案

你不需要先通过list(zip(*graph.nodes(data = "pos")))提取所有坐标再校验,有更简洁直接的实现方式:

直接在遍历节点的同时获取坐标属性做筛选,再调用NetworkX内置的subgraph方法生成子图即可,示例代码如下:

# 定义你的坐标范围
x_range = (min_x, max_x)
y_range = (min_y, max_y)

# 筛选符合坐标要求的节点
selected_nodes = [
    node for node, (x, y) in G.nodes(data="pos")
    if x_range[0] <= x <= x_range[1] and y_range[0] <= y <= y_range[1]
]

# 生成子图,copy()会生成独立的新图,保留原节点、边的所有属性
sub_graph = G.subgraph(selected_nodes).copy()

这个方案的优势:

  • 省去了额外的坐标提取、拆包转换步骤,逻辑更直观易维护
  • 内置的subgraph方法会自动保留符合条件的节点之间的原有边,不需要你手动校验边的归属关系
  • 生成的子图会自动继承原节点的pos等所有属性,不需要额外赋值

如果你有特殊需求需要保留一端在范围内的跨边界边,只需要先拿到选中节点的所有关联边,再把边的另一端节点也加入筛选列表即可,常规的区域裁剪子图场景用上述代码即可满足。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:27:02