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

如何用NetworkX为网格图部分节点着色及相关优化问题

使用NetworkX为网格图节点着色及调整尺寸

首先,你的现有代码可以简化——nx.grid_graph生成的节点本身就是(i,j)元组,直接用它作为位置参数即可,无需手动创建p列表和赋值节点属性:

import networkx as nx
import matplotlib.pyplot as plt  # 需要导入matplotlib显示图形

s = 10
G = nx.grid_graph(dim=[s, s])
# 直接用节点本身作为位置映射
pos = {node: node for node in G.nodes()}

为指定节点着色

要给特定节点设置颜色,需创建颜色映射列表,每个元素对应一个节点的颜色:

  1. 先给所有节点设置默认颜色(比如'lightblue')
  2. 定位目标节点(如左下角的(0,0)、右上角的(9,9)),修改对应位置的颜色

示例代码:

# 初始化颜色映射,默认所有节点为浅蓝色
node_colors = ['lightblue'] * len(G.nodes())
nodes_list = list(G.nodes())

# 找到左下角节点(0,0)的索引,设为红色
idx_bottom_left = nodes_list.index((0, 0))
node_colors[idx_bottom_left] = 'red'

# 找到右上角节点(9,9)的索引,设为绿色
idx_top_right = nodes_list.index((9, 9))
node_colors[idx_top_right] = 'green'

# 绘制图形,传入颜色和尺寸参数
nx.draw(G, pos, node_color=node_colors, node_size=50)  # node_size控制节点大小,数值越小节点越小
plt.show()

调整节点尺寸

在nx.draw()函数中,通过node_size参数即可调整节点大小,比如node_size=30会比默认尺寸小很多。


更适合绘制彩色点阵的工具

如果你的最终目标只是绘制带颜色的点阵(不需要图的边或网络分析功能),Matplotlib是更简单直接的选择,它专门用于数据可视化,学习成本更低:

示例代码(绘制10×10点阵,指定节点颜色):

import matplotlib.pyplot as plt

s = 10
# 生成所有点阵坐标
x = [i for i in range(s) for j in range(s)]
y = [j for i in range(s) for j in range(s)]

# 初始化颜色列表,默认蓝色
colors = ['blue'] * (s*s)

# 设置左下角(0,0)为红色,右上角(9,9)为绿色
colors[0] = 'red'  # (0,0)是第0个元素
colors[-1] = 'green'  # (9,9)是最后一个元素

# 绘制点阵
plt.scatter(x, y, color=colors, s=50)  # s控制点的大小
plt.grid(True)  # 显示网格线
plt.show()

这个方法无需处理图结构,直接操作坐标和颜色,更贴合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:30:04