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

如何在Networkx图的指定节点(如节点1)位置绘制红色圆圈?

在NetworkX图的指定节点位置绘制覆盖红色圆圈

要实现这个需求,核心是先获取节点的布局坐标,再用Matplotlib在对应位置绘制红色图形覆盖。以下是针对你提供的示例代码的修改方案:

方案一:基于路径图的实现

import networkx as nx
import matplotlib.pyplot as plt

G = nx.path_graph(4)
# 保存布局位置,避免重复调用生成不同坐标
pos = nx.spring_layout(G, seed=123)  # 设置seed保证布局固定
# 绘制原图
nx.draw_networkx(G, pos=pos)

# 获取标签为1的节点坐标
node_1_pos = pos[1]
# 在该位置绘制红色空心圆圈,s控制大小,zorder设为更高值确保覆盖在原图上方
plt.scatter(node_1_pos[0], node_1_pos[1], s=200, facecolor='none', edgecolor='red', linewidth=2, zorder=10)

plt.show()

方案二:基于随机有向图的实现

import networkx as nx
import numpy as np
import matplotlib.pyplot as plt

np.random.seed(123)

graph = nx.erdos_renyi_graph(5, 0.3, seed=123, directed=True)
pos = nx.spring_layout(graph, seed=123)  # 固定布局
nx.draw_networkx(graph, pos=pos)

# 获取标签为1的节点坐标
node_1_pos = pos[1]
# 绘制半透明红色实心圆,覆盖在节点上方
plt.scatter(node_1_pos[0], node_1_pos[1], s=250, color='red', alpha=0.5, zorder=10)

plt.show()

关键说明

  • 必须保存布局位置变量pos:直接调用nx.spring_layout()不保存的话,后续无法获取准确的节点坐标,且多次调用可能生成不同布局。
  • zorder参数:设置为比原图更高的数值(比如10),确保红色圆圈覆盖在NetworkX绘制的节点和边上方。
  • scatter参数调整:s控制圆圈大小,edgecolor和facecolor可分别设置边框和填充颜色,alpha控制透明度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:25:15