当前位置:首页 > AI技术 > 正文内容

网络图怎么画 NetworkX库绘制节点与关系拓扑图|Duuu笔记

admin4个月前 (04-09)AI技术120

基于真实项目经验的Python实战分享

不是必须但几乎总是需要导入 matplotlib.pyplot 并调用 plt.show();nx.draw_networkx() 更常用且省心,适合教学调试;中文显示需配置 font.sans-serif;布局算法如 spring_layout 适用于小图。

NetworkX 画图前必须调用

matplotlib.pyplot

吗?

不是必须,但几乎总是需要——因为

networkx.draw()

本身不显示图像,只调用 Matplotlib 的底层绘图逻辑。不导入

matplotlib.pyplot

或不调用

plt.show()

,你会看到“没报错但没图”的静默失败。

常见错误现象:

RuntimeWarning: No artists with labels found to put in legend.

或直接无输出;Jupyter 中单元格执行完一片空白。

必须显式导入:

import matplotlib.pyplot as plt

绘图后必须加

plt.show()

(脚本中)或依赖 Jupyter 自动渲染(但建议仍写上,避免跨环境失效)

若用

plt.figure(figsize=(8,6))

提前设画布,记得在

draw()

前调用,否则可能被忽略

nx.draw()

nx.draw_networkx()

选哪个?

nx.draw_networkx()

是更常用、更省心的封装,它默认启用节点标签、边权重提示、交互友好布局;而

nx.draw()

更底层,适合批量出图或嵌入 GUI,但默认不画节点名、不自动适配字体大小。

使用场景:快速验证拓扑结构、教学演示、调试关系连通性 → 优先用

nx.draw_networkx()

;生成高清 SVG 用于文档、或需精确控制每条边颜色/宽度 → 可切回

nx.draw()

配合参数逐项设置。

Python免费学习笔记(深入)

”;

nx.draw_networkx(G)

自动调用

nx.draw_networkx_nodes()

+

nx.draw_networkx_edges()

+

nx.draw_networkx_labels()

想关掉节点标签?传

with_labels=False

,别试图删

labels

参数——它不存在于

draw()

性能影响:二者底层一致,但

draw_networkx()

多一次字典遍历取 label,默认开销可忽略

中文节点名显示为方块?字体路径和

font_family

怎么设

Matplotlib 默认不支持中文字体,

nx.draw_networkx()

用的是

matplotlib.rcParams['font.family']

,不改就只能显示方块。

Action Figure AI

借助Action Figure AI的先进技术,瞬间将照片转化为定制动作人偶。

下载

关键不是装字体,而是让 Matplotlib “知道”系统里有可用中文字体。Windows 用户常误以为 SimHei 就行,其实得确认该字体文件真实存在且被 Matplotlib 缓存识别。

先运行

matplotlib.font_manager.findSystemFonts(fontpaths=None, fontext='ttf')

看返回列表里有没有中文字体路径

临时生效:在绘图前加

plt.rcParams['font.sans-serif'] = ['SimHei', 'Microsoft YaHei', 'KaiTi']

(顺序重要,前面优先)

永久生效:修改

matplotlib.matplotlib_fname()

返回的

matplotlibrc

文件,设

font.sans-serif:

注意:Jupyter 中改 rcParams 后需重启内核才对后续 cell 生效

图太挤/节点重叠/边线缠绕——布局算法怎么选

NetworkX 不画图,只算坐标。

nx.spring_layout()

(默认)适合小图(nx.kamada_kawai_layout() 对称美观但计算慢;真正实用的是

nx.nx_agraph.graphviz_layout()

(需安装 Graphviz),它能导出清晰的层级/树状结构。

使用场景:社交网络小样本分析 →

spring_layout(k=1.5, iterations=50)

;组织架构图 →

graphviz_layout(G, prog='dot')

;电路拓扑或流程图 →

shell_layout()

分圈排布。

k

参数控制节点间斥力强度,值越大越分散(但太大反而飞散)

seed

必须设(如

seed=42

),否则每次运行坐标不同,不利于对比调试

兼容性坑:Graphviz 在 Windows 上要手动配环境变量

PATH

dot.exe

所在目录,Mac/Linux 用

brew install graphviz

apt install graphviz

最常被忽略的一点:NetworkX 本身不校验节点 ID 类型。如果你用字典键做节点名,又混入

None

或浮点数当 ID,某些 layout 函数(比如

planar_layout

)会直接抛

NetworkXException

,错误信息里却不会告诉你哪条数据有问题——得自己先

assert all(isinstance(n, (str, int)) for n in G.nodes())

相关文章

【大数据分析 | 深度学习】在Hadoop上实现分布式深度学习

一、Submarine(Hadoop生态系统) (一)Submarine 介绍 (三)Submarine 属于 Hadoop 生态系统 (四)Submarine 官网版...

Unity 机器学习 基础

ML-Agents 资产导入 Unity 场景创建 Unity 代码部分 Anaconda 执行 rollerball_config.yaml 机器学习逻辑处理...

几种主要的神经网络

卷积神经网络的输入为二维的像素整阵列,输出为这个图片的属性,当网络训练学习后,所输入的图片或许经过稍微的变换,但卷积神经网络还是可以通过识别图片局部的特征而将整个图片识别出来。 :该层...

AI核心技巧:如何重置openclaw硬件设置 openclaw恢复出厂设置操作方法【操作】深度解析|Duuu笔记

重置 OpenClaw 配置有四种方法:一、交互式向导重置(openclaw onboard --reset);二、指定作用域的命令行重置(如--reset-scope config);三、手动删除~...

前端开发实战详解:骡子快跑怎么注册账号 骡子快跑账号注册流程最佳实践|Duuu笔记

骡子快跑注册仅需1分钟,但激活码需从Discord指定频道获取,输错3次将锁账户24小时;积分与注册邮箱强绑定且不可更换;部分地区即使注册成功也无法运行Agent。 ☞☞☞AI 智能聊天, 问答助手...

bp神经网络是什么网络,神经网络和bp神经网络

1、前馈神经网络:一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层间没有反馈。 2、BP神经网络:是一种按照误差逆向传播...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。