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

如何基于矩阵在Python中绘制关系图?Excel矩阵导入Gephi失败如何解决

加权邻接矩阵关系图Python实现方案

你给出的是6×6无向加权邻接矩阵,可通过networkx+matplotlib组合实现可视化,操作步骤如下:

1 前置依赖安装

执行以下命令安装所需工具库:

pip install pandas networkx matplotlib openpyxl

其中openpyxl仅用于读取xlsx格式的Excel文件,如果你用的是xls格式可替换为xlrd。

2 代码实现

2.1 直接使用提供的矩阵绘图

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

# 输入给定的邻接矩阵
adj_matrix = np.array([
    [0, 0, 0, 1, 0, 0],
    [0, 0, 1, 0, 0, 0],
    [0, 1, 0, 1, 0, 0],
    [1, 0, 1, 0, 1, 2],
    [0, 0, 0, 1, 0, 1],
    [0, 0, 0, 2, 1, 0]
])

# 创建无向加权图
G = nx.from_numpy_array(adj_matrix)

# 设置绘图布局,可选circular_layout、kamada_kawai_layout等
pos = nx.spring_layout(G, seed=42) # seed固定布局避免每次运行图位置变化

# 绘制节点
nx.draw_networkx_nodes(G, pos, node_size=700, node_color='lightblue')
# 绘制节点标签(默认从0开始编号,对应矩阵的行/列序号)
nx.draw_networkx_labels(G, pos, font_size=12)
# 绘制边,宽度对应权重大小
edges = G.edges(data=True)
nx.draw_networkx_edges(G, pos, edgelist=edges, width=[d['weight']*2 for (u,v,d) in edges])
# 绘制边权重标签
nx.draw_networkx_edge_labels(G, pos, edge_labels={(u,v):d['weight'] for (u,v,d) in edges})

# 关闭坐标轴
plt.axis('off')
plt.show()

2.2 从Excel文件读取矩阵绘图

如果你的矩阵保存在Excel里,只需要把上述代码中adj_matrix的定义部分替换为以下代码即可:

import pandas as pd

# 替换为你的Excel文件路径,header=None表示Excel里没有表头行,index_col=None表示没有行索引列
# 如果你的矩阵第一行是列名、第一列是行名,自行删除header和index_col参数即可
df = pd.read_excel('你的矩阵文件路径.xlsx', header=None, index_col=None)
adj_matrix = df.values

3 常见调整项

  • 更换布局:把spring_layout替换为circular_layout可得到环形排布的节点图,替换为kamada_kawai_layout可得到节点分布更均匀的图
  • 调整样式:修改node_color、node_size、edge_color等参数可自定义图形样式
  • 导出图片:把plt.show()替换为plt.savefig('关系图.png', dpi=300, bbox_inches='tight')可直接导出高清图片

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:36:04