尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
使用matplotlib自定义清晰的可视化代码
Matplotlib 入门到实战从安装到画出论文级图表适合谁读刚学 Python、想把数据画成图、写博客/做科研需要出图的同学。环境Windows / macOS / Linux 通用示例代码以 Python 3 Windows 为主。阅读时长约 15 分钟跟着敲一遍就能上手。一、为什么要学 Matplotlib它好在哪Matplotlib 是 Python 里最基础的绘图库几乎所有数据可视化工具seaborn、pandas 画图、深度学习框架可视化都建立在它之上。选它的理由1. 纯 Python、生态无缝衔接你用numpy算好的数组、pandas读好的表格、torch训好的曲线直接喂给 Matplotlib 就能画不用在不同软件间导来导去。2. 可脚本化、结果可复现Excel / Origin 是手点鼠标出图换个数据就得重画一遍。Matplotlib 是代码出图——数据变了改个数字重跑脚本图自动更新永远一致。这对科研、博客配图尤其重要。3. 出版级输出格式支持png / pdf / svg / eps分辨率dpi随便调。矢量图pdf/svg放到论文里放大不糊这是截图做不到的。4. 从一行出图到像素级控制都支持新手用plt.plot()一行就能出图老手用面向对象 API 能精确控制每一个边框、刻度、字体。一套工具覆盖全阶段。5. 免费、开源、跨平台不用买授权Windows / Mac / Linux 行为一致。简单对比工具适合场景缺点Excel随手画、临时看难复现、不美观、不能批处理Origin科研标配付费、闭源、换数据麻烦Matplotlib脚本化、可复现、出版级上手要写几行代码二、安装下载命令方式一pip 安装最通用pipinstallmatplotlibnumpy会作为依赖自动装好。如果你用的是国内网络、下载慢可以加清华源pipinstallmatplotlib-ihttps://pypi.tuna.tsinghua.edu.cn/simple推荐先建虚拟环境再装避免把包装得到处都是、互相冲突python-mvenv venv# 建环境venv\Scripts\activate# Windows 激活Mac/Linux 用 source venv/bin/activatepipinstallmatplotlib方式二Anaconda 用户condainstallmatplotlib验证安装是否成功importmatplotlibprint(matplotlib.__version__)能打印出版本号如3.9.4就说明装好了。三、基础使用教程3.1 你的第一张图importmatplotlib.pyplotasplt x[1,2,3,4,5]y[2,4,1,8,5]plt.plot(x,y)# 画线plt.title(My First Plot)plt.xlabel(X axis)plt.ylabel(Y axis)plt.show()# 弹窗显示pyplotplt是 Matplotlib 提供的快捷方式模块plot画线、show弹窗。3.2 理解两张画布Figure 与 Axes很多初学者分不清这两个概念记住一句话Figure 整张纸Axes 纸上的一块画图区域坐标系fig,axplt.subplots()# 推荐面向对象写法ax.plot(x,y)ax.set_title(用 Axes 画)plt.show()3.3 常见图类型一览图类型代码用途折线图ax.plot(x, y)趋势、训练曲线散点图ax.scatter(x, y)相关性、分布柱状图ax.bar(x, h)类别对比直方图ax.hist(data)数据分布饼图ax.pie(sizes)占比3.4 让图变好看美化四件套ax.plot(x,y,color#4C72B0,linewidth2,linestyle--,markero,label曲线A)ax.set_title(标题,fontsize14,weightbold)ax.set_xlabel(X);ax.set_ylabel(Y)ax.legend()# 显示图例靠 labelax.grid(alpha0.3)# 淡网格线color用#RRGGBB十六进制色比英文色名更精准linestyle--虚线markero数据点圆圈ax.legend()必须配合label才会显示3.5 中文显示必看的坑默认 Matplotlib 不含中文字体中文会显示成方块。一行搞定plt.rcParams[font.sans-serif][SimHei]# Windows 用黑体plt.rcParams[axes.unicode_minus]False# 让负号正常显示不同系统换字体名系统字体设置Windows[SimHei]macOS[Arial Unicode MS]或[PingFang SC]Linux[WenQuanYi Zen Hei]文泉驿3.6 保存图片而不是只弹窗plt.savefig(figure.png,dpi300,bbox_inchestight)dpi300打印/出版清晰度博客用 150 足够bbox_inchestight自动去掉周围白边想放论文存pdf或svg矢量无限放大不糊顺序提醒先savefig再showshow()之后图会被清空savefig 可能存到空白。3.7 无界面环境服务器/脚本必加一行在没有显示器的环境服务器、CI、后台脚本直接画图会报错。在import pyplot之前加importmatplotlib matplotlib.use(Agg)# 指定无界面后端importmatplotlib.pyplotasplt这样图只会存成文件不尝试弹窗。四、实战画一张论文级雷达图雷达图蜘蛛图用来对比多个模型在多个指标上的综合能力。下面是一段独立可跑的代码特点是网格是等边多边形不是默认的圆更符合出版审美支持中文能在无界面环境运行 雷达图 / 蜘蛛图绘制脚本 (Radar / Spider Chart) —— 等边多边形网格版 用途: 论文中多模型在多个指标上的综合对比可视化 依赖: matplotlib, numpy (yolonew_env 已包含) 改数据只动下面三处(1 指标名 / 2 各模型原始值 / 3 无需改,自动归一化) importmatplotlib matplotlib.use(Agg)# 无界面环境也能存图importnumpyasnpimportmatplotlib.pyplotaspltfrommathimportpi,cos,sin# 1. 指标名称(按需修改) METRICS[mAP0.5,mAP0.5:0.95,Precision,Recall,轻量性,实时性]Nlen(METRICS)# 2. 各模型原始数据(把真实结果填进来) # 精度类直接填真实值(0~1): map50 / map(mAP50-95) / p / r# params 单位 M(百万); fps 填实测帧率(相对值也可,仅用于绘图)RAW{YOLOv8n:dict(map500.7716,map0.5850,p0.770,r0.700,params3.20,fps142),CBAM:dict(map500.7854,map0.6000,p0.800,r0.720,params3.02,fps138),YOLOv8s:dict(map500.9350,map0.7720,p0.870,r0.820,params11.2,fps88),GVC(ours):dict(map500.7761,map0.5937,p0.772,r0.7085,params2.70,fps150),}COLORS[#4C72B0,#55A868,#C44E52,#DD8452]# 3. 归一化(全部转成越大越好, 0~1) PMINmin(d[params]fordinRAW.values())# 最轻模型作基准 - 轻量性FMAXmax(d[fps]fordinRAW.values())# 最快模型作基准 - 实时性DATA{}forname,dinRAW.items():DATA[name][d[map50],d[map],d[p],d[r],PMIN/d[params],# 参数量越小越轻 - 取倒数归一d[fps]/FMAX,# 帧率越大越快]# 4. 绘图(直角坐标 三角函数 - 等边多边形网格) # 各轴角度: 从正上方开始, 逆时针均匀 N 份 - 自然形成正 N 边形angles[pi/22*pi*i/Nforiinrange(N)]plt.rcParams[font.sans-serif][SimHei]# Windows 中文plt.rcParams[axes.unicode_minus]Falsefig,axplt.subplots(figsize(7,7),dpi150)ax.set_aspect(equal)# 保证多边形不被拉伸ax.axis(off)# ---- 网格: 每层一个同心正 N 边形 ----levels[0.2,0.4,0.6,0.8,1.0]forrinlevels:xs[r*cos(a)forainangles][r*cos(angles[0])]ys[r*sin(a)forainangles][r*sin(angles[0])]ax.plot(xs,ys,color#cccccc,lw0.8,alpha0.7)# 刻度数值标在第一根轴(正上方)左侧ax.text(-0.04,r,f{r:.1f},haright,vacenter,fontsize8,colorgrey)# ---- 轴射线 指标名 ----fori,ainenumerate(angles):ax.plot([0,cos(a)],[0,sin(a)],color#cccccc,lw0.8,alpha0.7)x,y1.12*cos(a),1.12*sin(a)hacenterifcos(a)0.1:haleftelifcos(a)-0.1:harightax.text(x,y,METRICS[i],haha,vacenter,fontsize12)# ---- 各模型数据多边形 ----for(name,vals),colorinzip(DATA.items(),COLORS):xs[v*cos(a)forv,ainzip(vals,angles)][vals[0]*cos(angles[0])]ys[v*sin(a)forv,ainzip(vals,angles)][vals[0]*sin(angles[0])]ax.plot(xs,ys,linewidth2,labelname,colorcolor)ax.fill(xs,ys,alpha0.10,colorcolor)ax.set_xlim(-1.35,1.35)ax.set_ylim(-1.35,1.35)ax.legend(locupper right,bbox_to_anchor(1.22,1.10),fontsize11,frameonFalse)plt.title(多模型综合性能雷达对比 (GVC vs 基线),fontsize14,pad22,weightbold)plt.tight_layout()plt.savefig(gvc_radar_chart.png,dpi150,bbox_inchestight)print([OK] saved gvc_radar_chart.png)关键点解释极坐标polarTrue的外圈永远是圆所以用直角坐标 三角函数算顶点才能画出正 N 边形set_aspect(equal)保证不被拉成椭圆改数据只动models字典图自动更新在这里插入图片描述五、常见坑速查表现象原因解决办法中文显示成方块缺中文字体rcParams[font.sans-serif][SimHei]服务器上报错无显示器matplotlib.use(Agg)保存的图是空白show()在savefig之前先savefig再show多条线叠在一起复用了同一个 axes每次画图前fig, ax plt.subplots()负号显示成方块字体问题rcParams[axes.unicode_minus]False图被裁掉一部分布局太挤bbox_inchestight或plt.tight_layout()六、总结 学习资源Matplotlib 上手只要记住三件事plot画线、savefig存图、rcParams解决中文。掌握基础后你会发现写代码出图比手点鼠标快得多而且永不走样。进阶方向seaborn在 Matplotlib 上封装统计图更漂亮、代码更短plotly交互式图表鼠标悬停看数值适合网页官网画廊https://matplotlib.org/gallery — 想要什么图直接抄示例代码改数据收藏本文下次画图直接对着速查表改就行。 Happy plotting!
RELATED

相关推荐

告别玄学调参:基于波形可视化的PID参数整定实战指南

告别玄学调参:基于波形可视化的PID参数整定实战指南

这次我们来看一个在智能车竞赛和嵌入式开发中绕不开,却又让很多人头疼的问题:PID参数整定。很多同学调PID全凭感觉,P大了就减P,I大了就减I,连个像样的波形都没看过,结果就是小车要么“抽风”,要…

📅 2026/8/26 23:54:59
AI提示词赋能小说创作:从原理到实战的网文生成指南

AI提示词赋能小说创作:从原理到实战的网文生成指南

这次我们来看一个专门为小说创作设计的AI提示词项目。它不是一个独立的软件或模型,而是一套精心设计的提示词集合,旨在帮助作者,特别是网文作者,利用大语言模型(如ChatGPT、Claude、文心一言等)高效生成小说…

📅 2026/8/23 3:47:13
BrowserOS Neo 核心应用场景与落地指南

BrowserOS Neo 核心应用场景与落地指南

在本地运行大模型曾经是很多开发者的梦想,但受限于硬件资源和部署复杂度,大多数人只能望而却步。随着 WebAssembly 和量化技术的成熟,现在我们已经可以在浏览器端直接加载并运行参数量适中的大语言模型,实现真正的实时交互。这种变…

📅 2026/9/1 3:36:40
MORE NEWS

更多资讯

📰

三阶段:windows系统渗透测试-DAY-01

郑重声明:该系列课程仅供学习、研究网络安全防御使用,请勿用于非法用途,违者一律自行承担所有风险! 郑重声明:该系列课程仅供学习、研究网络安全防御使用,请勿用于非法用途,违者一律自行承担所…

📰

英伟达:用Git做智能体科研的共享大脑

📖标题:Agora: Git as Shared Memory for Collective AutoResearch 🌐来源:arXiv, 2609.18094v1 🛎️文章简介 🔸研究问题:当多个AI智能体同时进行科研探索时,如何避免它们各自为战、…

📰

Atlas 300V 24G推理卡上手:从硬件认知到YOLO模型部署全流程

最近在技术社区里看到两个挨得很近的热搜词:“atlas部署yolo”和“atlas 300v 24g 是运算加速卡吗”。两个问题放在一起,基本就是一个新手拿到一张Atlas 300V 24G推理卡之后的完整困惑:手上这张卡到底是什么,它和显卡有什么区别&a…

📰

IMX6ULL 定时器 UART

一、定时器1. EPIT(增强型周期性中断定时器)全称:Enhanced Periodic Interrupt Timer32 位自减(递减)定时器,计数范围:0x00000000 - 0xFFFFFFFF。时钟源可选:24MHz 外设时钟&#xf…

📰

文件与目录

bashpwd #我在哪ls -l #查看文件权限/大小/时间ls -la #包含隐藏文件cd /etc #切换目录mkdir -p a/b/c #递归创建目录touch test.txt #创建空文件cp -r dir1 dir2 #复制目录mv file1 file2 #移动/重命名rm -rf dir …

📰

华为 分阶段发布应用

一、分阶段发布在当前上架版本为全网发布时,可以采用分阶段发布的方式进行应用升级。采用分阶段发布,可以先向一定比例的用户发布更新的版本,然后再逐步提升用户比例,最终实现全网发布。核心价值:通过小范围的版本更新…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬