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

NetworkX:绘制中心节点居中、源节点环形环绕的网络图

实现环形网络布局方案

我来帮你搞定这个环形布局的问题!结合networkx和matplotlib,我们可以完美实现你想要的效果,下面是具体的步骤和代码:

完整代码示例

import networkx as nx
import matplotlib.pyplot as plt
import math

# 1. 构建你的网络
G = nx.Graph()
center_node = "center"
source_nodes = [f"s{i}" for i in range(1, 6)]  # 示例5个source节点,可按需修改数量

# 添加节点和边
G.add_node(center_node)
G.add_nodes_from(source_nodes)
for s in source_nodes:
    G.add_edge(center_node, s)

# 2. 设置布局参数
figsize = (8, 8)  # 可自定义画布大小
radius = 3  # 半径与figsize成比例:figsize(8,8)配radius3,figsize(10,10)配radius4,以此类推

# 3. 计算节点位置
pos = {}
# 中心节点固定在坐标原点(0,0)
pos[center_node] = (0, 0)

# 计算每个source节点的角度,确保均匀分布在圆周上
num_sources = len(source_nodes)
angle_step = 2 * math.pi / num_sources  # 每个节点间的角度差

for i, node in enumerate(source_nodes):
    angle = i * angle_step
    # 基于极坐标转笛卡尔坐标计算节点位置
    x = radius * math.cos(angle)
    y = radius * math.sin(angle)
    pos[node] = (x, y)

# 4. 绘图美化
plt.figure(figsize=figsize)

# 绘制边:用淡灰色弱化视觉权重,突出中心节点
nx.draw_networkx_edges(G, pos, edge_color="#cccccc", width=2)

# 绘制节点:中心节点放大、深色突出,source节点统一样式
nx.draw_networkx_nodes(G, pos, nodelist=[center_node], node_size=1500, node_color="#2c3e50")
nx.draw_networkx_nodes(G, pos, nodelist=source_nodes, node_size=800, node_color="#3498db")

# 绘制节点标签
nx.draw_networkx_labels(G, pos, font_size=12, font_weight="bold")

# 隐藏坐标轴,让图更简洁美观
plt.axis("off")
plt.tight_layout()
plt.show()

关键细节说明

  • 半径与figsize的比例适配:这里的半径是相对画布的坐标值,matplotlib默认坐标轴范围会随figsize变化。比如figsize=(8,8)时,半径设为3能让节点刚好分布在画布中间区域;如果把figsize改成(10,10),可以把半径调到4,保持视觉上的平衡比例。
  • 均匀圆周排列:通过2π/节点数量计算每个source节点的角度差,确保它们整齐、均匀地环绕中心节点。
  • 视觉层次优化:把中心节点设置得更大、颜色更深,边用淡灰色处理,能有效突出中心节点的核心地位,让整个图的结构更清晰。

你可以根据需求灵活调整节点数量、颜色、大小或者画布尺寸,这个方案完全适配你的场景!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:56:37