day-044-Matplotlib进阶-高级图表
Day 44Matplotlib 进阶——统计图表与3D绘图柱状图、折线图、饼图已经熟练了。今天学更有分析味的图表箱线图看分布、小提琴图看分布形状、六边形热力图大数据散点、以及 Matplotlib 的 3D 功能。一、箱线图 boxplot()——一眼看清数据分布箱线图是数据分析和论文中最常用的统计图之一能同时展示中位数、四分位数、异常值。importmatplotlib.pyplotaspltimportnumpyasnp plt.rcParams[font.sans-serif][SimHei]plt.rcParams[axes.unicode_minus]Falsenp.random.seed(42)# 模拟数据四个班级的考试成绩class_Anp.random.normal(75,10,50)# 平均75标准差10class_Bnp.random.normal(80,8,50)# 平均80标准差8class_Cnp.random.normal(70,15,50)# 平均70标准差15离散大class_Dnp.random.normal(85,12,50)# 平均85标准差12data[class_A,class_B,class_C,class_D]labels[一班,二班,三班,四班]fig,axesplt.subplots(1,2,figsize(14,5))# --- 图1基础箱线图 ---bpaxes[0].boxplot(data,labelslabels,patch_artistTrue,showmeansTrue)# 配色colors[#FF6B6B,#4ECDC4,#45B7D1,#96CEB4]forpatch,colorinzip(bp[boxes],colors):patch.set_facecolor(color)patch.set_alpha(0.7)axes[0].set_ylabel(考试成绩,fontsize12)axes[0].set_title(班级成绩箱线图,fontsize14,fontweightbold)axes[0].grid(True,alpha0.3,axisy)# --- 图2横向箱线图 散点叠加 ---bp2axes[1].boxplot(data,labelslabels,patch_artistTrue,vertFalse,showmeansTrue,meanpropsdict(markerD,markerfacecolorred,markersize8))forpatch,colorinzip(bp2[boxes],colors):patch.set_facecolor(color)patch.set_alpha(0.5)# 叠加原始数据点fori,(d,color)inenumerate(zip(data,colors),1):jitternp.random.normal(0,0.04,len(d))# 加抖动避免重叠axes[1].scatter(d,ijitter,alpha0.4,s20,colorcolor,edgecolorwhite,zorder3)axes[1].set_xlabel(考试成绩,fontsize12)axes[1].set_title(横向箱线图 原始数据点,fontsize14,fontweightbold)axes[1].grid(True,alpha0.3,axisx)plt.tight_layout()plt.show()箱线图怎么读┬ ─── 最大值上边缘 │ │ ┬ ─── 上四分位数 Q375% │ │ │ ───┼─── ─── 中位数50% │ │ │ ┴ ─── 下四分位数 Q125% │ ┴ ─── 最小值下边缘 ○ ─── 异常值离群点二、小提琴图 violinplot()——箱线图的升级版小提琴图 箱线图 密度曲线。既能看到统计量又能看到数据分布形状。fig,axesplt.subplots(1,2,figsize(14,5))# --- 图1基础小提琴图 ---vpaxes[0].violinplot(data,positions[1,2,3,4],showmeansTrue,showmediansTrue)fori,bodyinenumerate(vp[bodies]):body.set_facecolor(colors[i])body.set_alpha(0.7)axes[0].set_xticks([1,2,3,4])axes[0].set_xticklabels(labels)axes[0].set_ylabel(考试成绩,fontsize12)axes[0].set_title(小提琴图,fontsize14,fontweightbold)axes[0].grid(True,alpha0.3,axisy)# --- 图2箱线图 vs 小提琴图对比 ---# 同数据一半箱线图一半小提琴图data_combinednp.concatenate(data)labels_combinednp.repeat(labels,[len(d)fordindata])axes[1].boxplot(data,labelslabels,patch_artistTrue,widths0.3,positionsnp.arange(1,5)-0.15,showfliersFalse)vp2axes[1].violinplot(data,positionsnp.arange(1,5)0.15,showmediansTrue)fori,bodyinenumerate(vp2[bodies]):body.set_facecolor(colors[i])body.set_alpha(0.5)axes[1].set_xticks([1,2,3,4])axes[1].set_xticklabels(labels)axes[1].set_title(箱线图(左) 小提琴图(右) 同框对比,fontsize14,fontweightbold)axes[1].grid(True,alpha0.3,axisy)plt.tight_layout()plt.show()三、hexbin()——海量散点的高效可视化普通散点图数据一多就糊成一片。hexbin()用六边形格子统计每个区域的数据密度。np.random.seed(42)n10000# 一万个点# 模拟有相关性的双变量数据mean[0,0]cov[[1,0.7],[0.7,1]]x,ynp.random.multivariate_normal(mean,cov,n).T fig,axesplt.subplots(1,3,figsize(16,5))# --- 普通散点图 ---axes[0].scatter(x,y,s1,alpha0.3,color#5B9BD5)axes[0].set_title(f普通散点图 (n{n})\n糊成一片)axes[0].set_xlabel(X)axes[0].set_ylabel(Y)axes[0].grid(True,alpha0.3)# --- hexbin 六边形热力图 ---hbaxes[1].hexbin(x,y,gridsize40,cmapYlOrRd,mincnt1)plt.colorbar(hb,axaxes[1],label数据点数,shrink0.8)axes[1].set_title(hexbin 六边形密度图\n密度分布一目了然)axes[1].set_xlabel(X)axes[1].set_ylabel(Y)# --- 带等高线的 hexbin ---axes[2].hexbin(x,y,gridsize40,cmapBlues,mincnt1)# 叠加 KDE 等高线用 scipyfromscipy.statsimportgaussian_kde kdegaussian_kde(np.vstack([x,y]))xi,yinp.mgrid[-4:4:100j,-4:4:100j]zikde(np.vstack([xi.flatten(),yi.flatten()])).reshape(xi.shape)axes[2].contour(xi,yi,zi,levels6,colorsred,linewidths1.5,alpha0.7)axes[2].set_title(hexbin KDE 等高线)axes[2].set_xlabel(X)axes[2].set_ylabel(Y)plt.tight_layout()plt.show()四、3D 绘图入门Matplotlib 可以画 3D 图虽然不如专业工具强大但日常够用。# 导入 3D 模块frommpl_toolkits.mplot3dimportAxes3D# 虽未显式用但必须导入4.1 3D 曲线figplt.figure(figsize(14,5))# --- 3D 螺旋线 ---ax1fig.add_subplot(1,2,1,projection3d)tnp.linspace(0,4*np.pi,200)xnp.sin(t)ynp.cos(t)zt ax1.plot(x,y,z,b-,linewidth2)ax1.set_xlabel(X)ax1.set_ylabel(Y)ax1.set_zlabel(Z)ax1.set_title(3D 螺旋线,fontsize12,fontweightbold)# --- 3D 散点图 ---ax2fig.add_subplot(1,2,2,projection3d)np.random.seed(42)n300xsnp.random.randn(n)ysnp.random.randn(n)zsxs**2ys**2np.random.randn(n)*0.5scax2.scatter(xs,ys,zs,czs,cmapviridis,s20,alpha0.7)plt.colorbar(sc,axax2,shrink0.6,labelZ值)ax2.set_xlabel(X)ax2.set_ylabel(Y)ax2.set_zlabel(Z X² Y² noise)ax2.set_title(3D 散点图,fontsize12,fontweightbold)plt.tight_layout()plt.show()4.2 3D 曲面图# 曲面图 plot_surfacexnp.linspace(-5,5,100)ynp.linspace(-5,5,100)X,Ynp.meshgrid(x,y)Znp.sin(np.sqrt(X**2Y**2))# 涟漪函数figplt.figure(figsize(14,5))# --- 曲面图 ---ax1fig.add_subplot(1,2,1,projection3d)surfax1.plot_surface(X,Y,Z,cmapviridis,alpha0.85,linewidth0,antialiasedTrue)plt.colorbar(surf,axax1,shrink0.6,labelZ值)ax1.set_xlabel(X)ax1.set_ylabel(Y)ax1.set_zlabel(Z)ax1.set_title(plot_surface 曲面图,fontsize12,fontweightbold)# --- 线框图 ---ax2fig.add_subplot(1,2,2,projection3d)ax2.plot_wireframe(X,Y,Z,rstride5,cstride5,colorsteelblue,alpha0.6,linewidth0.5)ax2.set_xlabel(X)ax2.set_ylabel(Y)ax2.set_zlabel(Z)ax2.set_title(plot_wireframe 线框图,fontsize12,fontweightbold)plt.tight_layout()plt.show()4.3 3D 柱状图figplt.figure(figsize(8,6))axfig.add_subplot(111,projection3d)# 模拟 5天的4种产品销售数据daysnp.arange(5)productsnp.arange(4)data_3dnp.random.randint(10,100,(5,4))colors_3d[#FF6B6B,#4ECDC4,#45B7D1,#FFEAA7]_xnp.arange(5)# 天数_ynp.arange(4)# 产品_xx,_yynp.meshgrid(_x,_y)x_flat,y_flat_xx.ravel(),_yy.ravel()z_flatnp.zeros_like(x_flat)dxdy0.6dzdata_3d.T.ravel()# 每个柱子按产品颜色bar_colorsnp.repeat(colors_3d,5)ax.bar3d(x_flat,y_flat,z_flat,dx,dy,dz,colorbar_colors,alpha0.7,edgecolorwhite)ax.set_xlabel(天数)ax.set_ylabel(产品)ax.set_zlabel(销量)ax.set_xticks(_x)ax.set_yticks(_y)ax.set_yticklabels([手机,电脑,平板,耳机])ax.set_title(3D 柱状图5天 × 4产品,fontsize14,fontweightbold)plt.tight_layout()plt.show()五、踩坑记录 坑现象解决方案箱线图中文乱码标签出现方块确保 rcParams 字体设置在最前面violinplot 位置偏移图和标签对不齐手动指定positions[1,2,3...]hexbin 颜色全一样密度差异看不出调整gridsize越小格子越大越容易区分3D 图交互卡顿旋转视角很慢减少数据点或用rstride/cstride降低精度3D 图视角不对默认角度看不清ax.view_init(elev30, azim45)调整仰角和方位角scipy 未安装gaussian_kde 报错pip install scipy或跳过等高线部分六、总结图表类型函数一句话用途箱线图boxplot()比较组间分布差异小提琴图violinplot()看分布形状统计量六边形热力图hexbin()海量散点的密度分布3D曲线plot()with projection“3d”空间曲线3D曲面plot_surface()函数zf(x,y)可视化3D柱状bar3d()三维数据对比今天学完Matplotlib 能画的图表类型你已经掌握了 90%。明天是 Matplotlib 的最终篇——综合实战把前面 4 天的知识全部用在一个完整项目中。第44天打卡完成本系列是个人学习笔记如有错误欢迎在评论区指正交流。

相关新闻

【剪映Pro级智能工作流】:2024最新版隐藏功能深度解锁,仅限前500名认证用户调用的AI增强API接口

【剪映Pro级智能工作流】:2024最新版隐藏功能深度解锁,仅限前500名认证用户调用的AI增强API接口

更多请点击: https://kaifayun.com 第一章:剪映Pro级智能工作流的演进逻辑与技术架构 剪映Pro并非简单叠加AI功能的视频编辑工具,而是以“感知—决策—执行”闭环为内核重构的智能创作操作系统。其工作流演进本质是从线性时间轴操作转向多模…

2026/7/28 0:26:50阅读更多 →
150、实时性与延迟优化:从Sensor到Display的端到端延迟控制

150、实时性与延迟优化:从Sensor到Display的端到端延迟控制

150、实时性与延迟优化:从Sensor到Display的端到端延迟控制 一、一个让我失眠三天的延迟问题 去年做一款高端旗舰机的影像系统,客户反馈了一个极其诡异的问题:在暗光环境下开启夜景模式,按下快门后,取景画面会“卡”住大约200ms,然后才恢复正常。测试团队一开始以为是算…

2026/7/28 0:26:50阅读更多 →
智能降重实用技巧分享 高效实现内容原创度提升的靠谱方法指南

智能降重实用技巧分享 高效实现内容原创度提升的靠谱方法指南

本科毕业论文是大学四年最大的坎。开题报告憋一周写不出三页,找文献翻遍十几个网站还是缺关键资料,写正文卡壳半天憋不出一句话,降重改到凌晨三点结果逻辑全乱,答辩前一天PPT还没做完。别慌,亲测这四个工具能让你少熬半…

2026/7/28 0:24:50阅读更多 →
Tiny11Builder终极指南:快速打造精简版Windows 11系统镜像

Tiny11Builder终极指南:快速打造精简版Windows 11系统镜像

Tiny11Builder终极指南:快速打造精简版Windows 11系统镜像 【免费下载链接】tiny11builder Scripts to build a trimmed-down Windows 11 image. 项目地址: https://gitcode.com/GitHub_Trending/ti/tiny11builder Tiny11Builder是一款强大的PowerShell脚本工…

2026/7/28 1:34:59阅读更多 →
3步改造Flipper Zero:从单调白屏到炫彩RGB背光的完整指南

3步改造Flipper Zero:从单调白屏到炫彩RGB背光的完整指南

3步改造Flipper Zero:从单调白屏到炫彩RGB背光的完整指南 【免费下载链接】awesome-flipperzero 🐬 A collection of awesome resources for the Flipper Zero device. 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-flipperzero 你…

2026/7/28 1:34:59阅读更多 →
为什么你的局部重绘总发虚、崩结构、丢细节?——揭秘ControlNet+Inpaint模型融合的3层注意力对齐机制

为什么你的局部重绘总发虚、崩结构、丢细节?——揭秘ControlNet+Inpaint模型融合的3层注意力对齐机制

更多请点击: https://kaifayun.com 第一章:为什么你的局部重绘总发虚、崩结构、丢细节?——揭秘ControlNetInpaint模型融合的3层注意力对齐机制 局部重绘失效的根本症结,往往不在掩码精度或提示词强度,而在于ControlN…

2026/7/28 1:34:59阅读更多 →
大麦网自动抢票终极指南:告别手速焦虑,三步搞定热门演出门票

大麦网自动抢票终极指南:告别手速焦虑,三步搞定热门演出门票

大麦网自动抢票终极指南:告别手速焦虑,三步搞定热门演出门票 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 你是否曾经盯着手机屏幕,心跳…

2026/7/28 1:34:59阅读更多 →
通义千问API网关集成最佳实践:QPS提升3.8倍、延迟压降至86ms的4个关键配置点

通义千问API网关集成最佳实践:QPS提升3.8倍、延迟压降至86ms的4个关键配置点

更多请点击: https://intelliparadigm.com 第一章:通义千问API网关集成的性能跃迁全景图 通义千问API网关集成并非简单的接口代理升级,而是一次面向高并发、低延迟与弹性伸缩能力的系统性架构演进。通过将Qwen大模型服务统一纳管至自研API网…

2026/7/28 1:34:59阅读更多 →
p064基于Python的网络小说数据分析系统的设计与实现_hive+flask+spider31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

p064基于Python的网络小说数据分析系统的设计与实现_hive+flask+spider31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_

p064基于Python的网络小说数据分析系统的设计与实现_hiveflaskspider31(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ python3.7flaskhivespidermysql5.7vue

2026/7/28 1:32:59阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/27 1:14:34阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/27 1:14:52阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/27 1:14:56阅读更多 →
告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生

告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…

2026/7/28 0:00:29阅读更多 →
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%!

做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…

2026/7/28 0:00:29阅读更多 →
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽

2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…

2026/7/28 0:00:29阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/27 16:57:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/26 19:05:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/26 19:05:21阅读更多 →