本文介绍如何通过 for 循环重构重复性高的 `scatter3d` 多子图代码,统一设置坐标轴、颜色映射与视角参数,显著提升可读性与可维护性。
在使用 Matplotlib 绘制多视角 3D 散点图时,若为每个子图单独编写几乎相同的绘图逻辑(仅视角 view_init(elev, azim) 不同),不仅代码冗长,还容易因漏改某处参数导致不一致。最佳实践是将共性逻辑提取为循环体,差异化部分(如视角角度)以元组列表或函数生成方式传入。
以下是一个优化后的专业写法,支持任意数量的子图,并清晰分离「数据绘制」「视角配置」和「坐标系设置」三类操作:
import matplotlib.pyplot as plt
def plot_example(data_df):
"""
绘制四视角 3D 散点图:俯视(0°,90°)、侧视(45°,0°)、斜视1(35°,45°)、斜视2(20°,40°)
Parameters:
-----------
data_df : pandas.DataFrame
必须包含 'x', 'y', 'z' 列
"""
fig = plt.figure(figsize=(15, 15))
# 预定义各子图视角:(elev, azim)
view_angles = [(0, 90), (45, 0), (35, 45), (20, 40)]
for i, (elev, azim) in enumerate(view_angles, start=1):
ax =
fig.add_subplot(2, 2, i, projection='3d')
# 统一绘图
scatter = ax.scatter3D(
data_df.x, data_df.y, data_df.z,
c=data_df.z, cmap='Blues', s=20, alpha=0.8
)
# 设置视角
ax.view_init(elev=elev, azim=azim)
# 统一标签与样式
ax.set_xlabel('x', color='red', fontsize=10)
ax.set_ylabel('y', color='red', fontsize=10)
ax.set_zlabel('z', color='red', fontsize=10)
# 统一坐标范围(关键:必须对每个 ax 单独调用)
ax.set_xlim(0, 14)
ax.set_ylim(-6, 6)
ax.set_zlim(0, 8.5)
# 可选:添加共享 colorbar(增强可读性)
cbar = fig.colorbar(scatter, ax=fig.axes, shrink=0.5, aspect=20, pad=0.1)
cbar.set_label('z value', color='red', fontsize=12)
plt.tight_layout()
plt.show()✅ 关键优化点说明:
⚠️ 注意事项:
通过结构化循环与参数化配置,原始 60+ 行重复代码可压缩至 30 行以内,同时大幅提升逻辑一致性与后期维护效率。
# red
# igs
# matplotlib
# for
# 循环
# 重构
# 是一个
# 只需
# 适用于
# 可选
# 报错
# 如需
# 三类
# 差异化
# 结构化
# 后期
相关文章:
公司网站制作价格怎么算,公司办个官网需要多少钱?
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
javascript中的try catch异常捕获机制用法分析
如何通过建站之星自助学习解决操作问题?
已有域名和空间如何快速搭建网站?
建站之星导航如何优化提升用户体验?
建站之星如何一键生成手机站?
独立制作一个网站多少钱,建立网站需要花多少钱?
网站制作企业,网站的banner和导航栏是指什么?
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
建站主机功能解析:服务器选择与快速搭建指南
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
详解jQuery中基本的动画方法
如何快速打造个性化非模板自助建站?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
建站之星与建站宝盒如何选择最佳方案?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
建站主机核心功能解析:服务器选择与网站搭建流程指南
定制建站哪家更专业可靠?推荐榜单揭晓
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
如何在宝塔面板中修改默认建站目录?
如何在局域网内绑定自建网站域名?
建站之星云端配置指南:模板选择与SEO优化一键生成
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
如何用wdcp快速搭建高效网站?
高性价比服务器租赁——企业级配置与24小时运维服务
linux top下的 minerd 木马清除方法
c# 在ASP.NET Core中管理和取消后台任务
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
c++ stringstream用法详解_c++字符串与数字转换利器
岳西云建站教程与模板下载_一站式快速建站系统操作指南
seo网站制作优化,网站SEO优化步骤有哪些?
如何通过WDCP绑定主域名及创建子域名站点?
c++23 std::expected怎么用 c++优雅处理函数错误返回【详解】
如何快速生成高效建站系统源代码?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
,在苏州找工作,上哪个网站比较好?
开源网站制作软件,开源网站什么意思?
,怎么用自己头像做动态表情包?
大连网站设计制作招聘信息,大连投诉网站有哪些?
网站设计制作公司地址,网站建设比较好的公司都有哪些?
建站之星后台密码如何安全设置与找回?
html制作网站的步骤有哪些,iapp如何添加网页?
如何通过万网虚拟主机快速搭建网站?
C#怎么创建控制台应用 C# Console App项目创建方法
,石家庄四十八中学官网?
,购物网站怎么盈利呢?
如何用已有域名快速搭建网站?
Android自定义控件实现温度旋转按钮效果
如何在阿里云域名上完成建站全流程?
*请认真填写需求信息,我们会在24小时内与您取得联系。