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/10/20 10:46:00 阅读更多 →
150、实时性与延迟优化:从Sensor到Display的端到端延迟控制

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

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

2026/10/19 23:40:15 阅读更多 →
Excel 批量处理效率瓶颈,多款办公表格工具客观使用记录

Excel 批量处理效率瓶颈,多款办公表格工具客观使用记录

日常职场办公数据整理、报表归档、多表格规整工作中,Excel 批量修改、数据清洗、格式统一的重复劳动占比高,不同表格工具在批量处理能力、AI 功能适配、运行方式、数据安全上存在明显区别。下文客观记录五款 Excel 相关工具的基础能力与使用局限&#xf…

2026/10/20 10:46:24 阅读更多 →

最新新闻

KSyntaxHighlighting编译指南:解决KF6依赖与CMake构建链问题

KSyntaxHighlighting编译指南:解决KF6依赖与CMake构建链问题

1. 项目概述:为什么一个语法高亮库的编译会卡住你一整天?“编译 KSyntaxHighlighting 的过程中遇到的一些问题”——这个标题看起来平平无奇,甚至有点枯燥,但它背后藏着的是无数 C 跨平台开发者的共同记忆:一个看似轻量…

2026/10/20 12:05:01 阅读更多 →
置信规则库BRB MATLAB实现:证据推理与可解释故障诊断

置信规则库BRB MATLAB实现:证据推理与可解释故障诊断

简介:压缩包内是杨剑波教授设计的置信规则库(BRB)MATLAB实现代码,共9个文件、以8个m脚本和1个asv自动保存副本组成,整体仅11KB。这些代码覆盖数据预处理、规则库构建、参数优化、模型验证等完整环节,核心脚…

2026/10/20 12:05:01 阅读更多 →
联通网络实测:BT Tracker响应速度排名与优化方案

联通网络实测:BT Tracker响应速度排名与优化方案

上周我折腾了一件事:趁着2026年3月1日这波全国网络测速的热度,我把手上能用的BT Tracker服务器全部拉出来,专门在联通网络环境下跑了一遍延迟和响应测试。不是为了炫技,而是因为最近在帮几个做开源镜像站的朋友调BT分发方案&#…

2026/10/20 12:05:01 阅读更多 →
SSM+Vue家乡旅游宣传册系统:毕设全流程实战指南

SSM+Vue家乡旅游宣传册系统:毕设全流程实战指南

每年到了毕设选题的时候,总有一批计算机专业的同学站在表格面前反复纠结。如果你看中了“基于SSM和Vue的家乡旅游宣传书册系统”这个方向,我可以直接告诉你:这个题目选得相当稳妥。它的难度不在某个单项技术上,而在于把Spring、Sp…

2026/10/20 12:05:01 阅读更多 →
C语言快速排序:以第一个元素为枢轴的实现与避坑指南

C语言快速排序:以第一个元素为枢轴的实现与避坑指南

先说一句掏心窝的话:这道题我在课程作业、面试手写代码、甚至帮人改代码时都见过无数次。“C语言实现快速排序,以第一个元素作为枢轴”,听起来像教科书里最经典的开篇案例,可真正动手写的时候,大多数人卡在了同一个地方…

2026/10/20 12:05:00 阅读更多 →
基于websocket++的C++ WebSocket通信demo与二次开发实战

基于websocket++的C++ WebSocket通信demo与二次开发实战

简介:基于WebSocket构建的客户端与服务端示例代码包,面向需要在C项目中快速实现实时双向通信的开发者,尤其适合结合Boost在Windows环境下搭建WebSocket应用的初学者。压缩包共2000个文件,大小约320.48MB,内容以hpp头文…

2026/10/20 12:04:00 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →