为什么你的图表总是重叠?,立即掌握subplot_adjust中hspace的正确使用方式

第一章:为什么你的图表总是重叠?

在数据可视化过程中,图表元素重叠是一个常见但令人困扰的问题。无论是折线图中的标签堆叠,还是多个子图彼此覆盖,都会严重影响信息的可读性与专业性。造成这一现象的原因多种多样,理解其根本机制是解决问题的第一步。

布局管理被忽略

许多可视化库默认采用紧凑布局,未自动调整子图间距。例如,在 Matplotlib 中若未调用 plt.tight_layout(),多个子图极易发生重叠。

import matplotlib.pyplot as plt

fig, axes = plt.subplots(2, 2)
# 添加此行以避免重叠
plt.tight_layout()
plt.show()

坐标轴范围设置不当

当多条数据共享同一坐标轴时,若未合理设置 xlim 或 ylim,可能导致线条或标记相互遮挡。应根据数据分布动态调整显示范围。

图例与标注位置冲突

图例(legend)默认放置于图形内部,容易覆盖关键数据区域。推荐将其移至图形外部或使用自动定位策略:
  • 使用 loc='outside' 或指定边距位置
  • 启用图例的阴影和透明度提升可读性
  • 通过 bbox_to_anchor 精确控制图例坐标
问题类型常见原因推荐解决方案
子图重叠未启用自动布局plt.tight_layout() 或 fig.autofmt_xdate()
标签遮挡文本未避让使用 adjust_text 库自动调整

graph TD
    A[图表重叠] --> B{是否多子图?}
    B -->|是| C[启用tight_layout]
    B -->|否| D{是否有图例?}
    D --> E[调整图例位置]
    D --> F[优化坐标轴范围]

第二章:深入理解hspace参数的底层机制

2.1 hspace参数的定义与坐标系原理

hspace 是图像标签中的一个属性,用于设置图像左侧和右侧的水平空白区域(以像素为单位)。尽管在 HTML5 中已被弃用,但在遗留系统中仍常见。

坐标系中的定位机制

在传统HTML渲染模型中,图像嵌入行内元素时,hspace 会触发盒模型的外边距扩展,等效于CSS中的 margin-left 和 margin-right。

等效CSS替代方案
<img src="logo.png" hspace="20" />
<!-- 等效于 -->
<img src="logo.png" style="margin: 0 20px;" />

上述代码中,hspace="20" 会在图像左右各添加20像素空白,提升图文排版可读性。现代开发推荐使用CSS进行精确控制,实现响应式布局兼容。

2.2 子图间距计算方式与归一化单位解析

在多子图布局中,子图间距的精确控制对可视化效果至关重要。Matplotlib等绘图库通常采用归一化单位(Normalized Units)进行间距分配,该单位基于图形总尺寸将空间映射到[0, 1]区间,确保跨设备一致性。
归一化单位的工作原理
归一化单位将画布宽度和高度分别视为1个单位长度,无论实际分辨率如何变化。例如,设置子图间水平间距为0.05,表示留出5%的画布宽度作为间隔。
常用间距参数配置
  • wspace:控制子图间水平间距
  • hspace:控制子图间垂直间距
plt.subplots_adjust(wspace=0.3, hspace=0.4)
上述代码中,wspace=0.3 表示子图间水平方向留出30%的归一化空白区域,hspace=0.4 表示垂直方向留出40%的空白,有效避免标签重叠问题。

2.3 hspace与其他布局参数的协同关系

在图形布局中,hspace 并非孤立存在,它与 vspace、margin 和 padding 等参数共同决定元素间的相对位置和整体排版密度。
核心参数协同机制
  • hspace 与 vspace:分别控制水平与垂直间距,联合使用可实现二维空间的均衡分布;
  • hspace 与 margin:前者作用于组件内部子元素之间,后者定义组件与外部环境的距离;
  • padding 影响 hspace 感知:过大的内边距会压缩 hspace 的有效可用空间。
// 示例:Go 中图像布局配置
type Layout struct {
    HSpace int // 水平间距
    VSpace int // 垂直间距
    Margin int
    Padding int
}
// 当 HSpace=10, Padding=20 时,实际内容区宽度减少 40px
上述代码表明,HSpace 需结合其他参数综合计算真实布局效果。忽略协同关系易导致重叠或空白失衡。

2.4 不同图形尺寸下hspace的适应性表现

在多子图布局中,hspace 参数用于控制子图之间的水平间距。其适应性表现与图形尺寸密切相关,尤其在不同分辨率和宽高比下,合理设置 hspace 可避免标签重叠或空白过多。
响应式布局中的 hspace 行为
当图形宽度较小时,固定 hspace 值可能导致子图挤压;而在大尺寸画布中,相同值则显得疏松。建议结合 figsize 动态调整:
import matplotlib.pyplot as plt

fig, axs = plt.subplots(2, 2, figsize=(10, 8))
fig.subplots_adjust(hspace=0.3, wspace=0.2)
上述代码中,hspace=0.3 表示子图间垂直间距为平均子图高度的 30%。该相对单位确保在不同 figsize 下保持视觉一致性。
推荐配置对照表
图形宽度 (inches)推荐 hspace说明
6–80.2–0.3适中间距,适合常规展示
9–120.4–0.5防止因拉伸导致标签重叠
<60.1–0.2紧凑布局,避免空白浪费

2.5 常见误区:hspace设置无效的根本原因

属性已废弃,标准演进所致
hspace 是早期 HTML 中用于图像左右留白的非标准属性,在 HTML4 之后已被 CSS 取代。现代浏览器虽可能兼容渲染,但严格模式下常被忽略。
正确替代方案
应使用 CSS 的 margin 属性实现等效效果:
img.spaced {
  margin-left: 10px;
  margin-right: 10px;
}
上述代码通过设置左右外边距,实现与 hspace="10" 相同的视觉效果。使用 CSS 不仅符合现代标准,还支持响应式设计和更精细的控制。
常见错误对照表
错误用法正确做法
<img hspace="10"><img style="margin:0 10px">
依赖过时属性使用 CSS 控制布局

第三章:hspace在实际绘图中的典型应用

3.1 多行子图中垂直间距的合理配置

在绘制多行子图时,垂直间距(hspace)的设置直接影响图像的可读性与美观度。若间距过小,子图间标签易重叠;过大则浪费绘图区域。
参数调节策略
通过 plt.subplots_adjust() 可精确控制子图布局:
import matplotlib.pyplot as plt

fig, axes = plt.subplots(3, 2, figsize=(8, 10))
plt.subplots_adjust(hspace=0.4, top=0.95, bottom=0.1)
其中 hspace=0.4 表示子图间垂直间距为平均子图高度的40%,建议初始值设为0.3~0.5之间。
推荐配置对照表
子图行数推荐 hspace 值
20.3
30.4
≥40.5

3.2 结合tight_layout调整hspace避免重叠

在Matplotlib中,多个子图之间若间距不当,容易导致标签或标题重叠。通过结合 tight_layout 与手动设置 hspace,可实现更精细的布局控制。
参数协同作用机制
tight_layout 自动优化子图位置,但有时无法完全避免垂直方向的重叠。此时可通过 plt.subplots_adjust(hspace=) 手动增加子图间的垂直间距。
import matplotlib.pyplot as plt

fig, axes = plt.subplots(3, 1, figsize=(8, 6))
plt.tight_layout()
plt.subplots_adjust(hspace=0.3)
上述代码中,tight_layout() 首先进行自动布局,随后 hspace=0.3 指定子图间高度占比为30%,有效防止标题与坐标轴标签冲突。
推荐配置参考
子图数量建议 hspace 值
20.2
3+0.3–0.5

3.3 动态生成图表时hspace的自适应策略

在动态图表渲染中,hspace(水平间距)的合理分配直接影响可视化效果的可读性与美观度。为实现自适应布局,需根据容器宽度与数据维度动态计算间距值。
响应式hspace计算逻辑

function calculateHSpace(containerWidth, itemNum) {
  const minSpace = 10;      // 最小间距
  const padding = 40;       // 容器边距
  const totalAvailable = containerWidth - padding;
  const avgWidth = totalAvailable / itemNum;
  return Math.max(minSpace, avgWidth * 0.15); // 间距随元素宽度比例调整
}
该函数依据容器可用宽度与元素数量,按比例生成hspace,确保在不同屏幕尺寸下图表元素不重叠且分布均匀。
适配策略对比
策略适用场景hspace行为
固定值静态图表恒定不变
百分比响应式布局随容器缩放
算法动态计算复杂数据展示基于数据密度调整

第四章:高级布局优化技巧与案例分析

4.1 使用GridSpec替代subplot_adjust的场景对比

在复杂布局设计中,GridSpec 提供了比 subplot_adjust 更精细的网格控制能力。后者仅能调整子图间距,而前者支持跨行跨列的子图合并,适用于仪表盘或不规则布局。
核心优势对比
  • 灵活性:GridSpec 支持 subplot 跨网格定义
  • 可维护性:通过网格索引管理位置,代码更清晰
  • 响应式布局:自动适配不同图像尺寸
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec

fig = plt.figure(figsize=(8, 6))
gs = GridSpec(3, 3, figure=fig)

ax1 = fig.add_subplot(gs[0, :])   # 占据第一行全部
ax2 = fig.add_subplot(gs[1:, 0])  # 左下区域
ax3 = fig.add_subplot(gs[1:, 1:]) # 右下大区域
上述代码中,GridSpec(3, 3) 创建 3×3 网格,gs[0, :] 表示首行所有列,实现横向扩展。相比 plt.subplots_adjust() 的全局边距调节,GridSpec 实现了局部位置精控,适合复杂可视化需求。

4.2 混合使用hspace与wspace实现均衡布局

在复杂UI布局中,仅依赖单一间距控制往往难以实现视觉均衡。通过混合使用 hspace(水平间距)与 wspace(垂直间距),可精细调节组件间的相对位置。
布局参数配置示例
// 设置网格布局的间距参数
grid.SetSpacing(hspace: 12, wspace: 8)
// hspace: 控制列间水平空白
// wspace: 调节行间垂直空白
上述代码中,hspace=12px 确保内容列之间留有足够呼吸空间,而 wspace=8px 避免行距过大导致断裂感。
典型应用场景
  • 仪表盘卡片网格对齐
  • 表单字段分组排布
  • 响应式图表容器间距统一
合理搭配两者数值,可在不同屏幕尺寸下维持一致的视觉节奏。

4.3 处理标题与标签遮挡问题的综合方案

在复杂布局中,固定定位的标题或标签常因层级冲突导致内容遮挡。解决该问题需从层叠上下文与布局重构双管齐下。
调整CSS层叠优先级
通过合理设置 z-index 与 position 属性,确保关键元素处于顶层:
.header {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  z-index: 1000; /* 高于其他内容 */
}

.content {
  margin-top: 60px; /* 避开固定头部高度 */
}
上述代码确保页眉始终置顶且内容不被覆盖,z-index 值需大于页面其他组件。
动态偏移计算策略
  • 监听页面滚动事件,动态调整锚点位置
  • 使用 JavaScript 计算元素实际偏移量
  • 结合 getBoundingClientRect() 判断可视区域

4.4 高分辨率出版图表中的精确间距控制

在科学出版与数据可视化领域,高分辨率图表的排版精度直接影响可读性与专业性。精确控制图表元素间的间距是确保视觉平衡的关键。
使用Matplotlib进行子图间距调整
import matplotlib.pyplot as plt

fig, axes = plt.subplots(2, 2, figsize=(10, 10))
fig.tight_layout(pad=2.0)
fig.subplots_adjust(wspace=0.3, hspace=0.4)
上述代码中,subplots_adjust 的 wspace 和 hspace 参数分别控制子图之间的水平与垂直间距,单位为子图宽度/高度的比例。结合 tight_layout 可自动优化边距,避免标签重叠。
推荐的间距设置策略
  • 对于8K输出,建议字体大小≥24pt,保证缩放后清晰
  • 子图间距通常设为字体大小的1.5–2倍以维持视觉一致性
  • 使用constrained_layout=True替代手动调整,提升响应性

第五章:掌握hspace,告别图表重叠时代

理解hspace的核心作用
在Matplotlib等可视化库中,hspace参数用于控制子图之间的垂直间距。当多个子图堆叠显示时,缺乏合理间距会导致标题与下方图表重叠,严重影响可读性。
实际应用场景
假设需要绘制三行两列的监控仪表板,包含CPU、内存、磁盘等指标。默认布局常导致上一个子图的x轴标签与下一个子图的标题冲突。
  • 使用plt.subplots_adjust(hspace=0.3)可显著改善布局
  • 数值0.3表示子图间留出30%的空白区域
  • 较小值如0.1适用于紧凑布局,较大值如0.5适合带详细标注的图表
代码实战示例
import matplotlib.pyplot as plt

fig, axes = plt.subplots(3, 2, figsize=(10, 8))
plt.subplots_adjust(hspace=0.4)  # 关键参数调整

for i, ax in enumerate(axes.flat):
    ax.plot([1, 2, 3], [i+1, i*2, i*3])
    ax.set_title(f'Metric {i+1}', fontsize=12)
    ax.set_xlabel('Time')
    ax.set_ylabel('Value')

plt.show()
响应式布局建议
图表数量推荐hspace值适用场景
2-3个子图0.2 - 0.3常规报表
4个以上0.4 - 0.6复杂仪表板
[ 图表示例结构 ] Row 1: ┌─────────┐ ┌─────────┐ │ Chart 1 │ │ Chart 2 │ Row 2: ├─────────┤ ├─────────┤ ← hspace 控制此间隙 │ Chart 3 │ │ Chart 4 │
Matplotlib复杂子图嵌套布局:GridSpec、subplot2grid与inset_axes实战详解 在数据可视化领域,图表布局是提升信息传达效率的关键技术。其核心原理在于对画布空间进行精细化分割与坐标轴管理,以实现多图表的高效组合。这项技术的核心价值在于能够将复杂的数据关系通过逻辑清晰的视觉层次呈现,从而在学术研究、商业分析等场景中制作出信息密度高、可读性强的专业级图表。Matplotlib作为Python生态中功能强大的绘图库,其底层的Figure与Axes对象为复杂布局提供了基础。针对子图嵌套这一常见需求,GridSpec通过虚拟网格系统实现了比例精确的布局控制,subplot2grid提供了直观的坐 阅读详情

相关推荐

Matplotlib多子图布局实战:从基础subplot到高级GridSpec

数据可视化是数据分析与呈现的核心环节,其本质在于将复杂信息通过图形化手段清晰传达。在Python生态中,matplotlib作为最基础的绘图库,其子图功能是实现多图表协同展示的关键技术。通过subplot机制,开发者可以在单一画布上创建多个坐标轴,实现数据的对比、关联与叙事。这一技术对于构建数据仪表板、分析报告和交互式可视化具有重要价值,广泛应用于金融分析、业务监控、科研论文等场景。本文聚焦matplotlib的subplot函数与GridSpec高级布局,通过实战案例详解如何利用这些工具创建专业级的多图表

weixin_34218579的博客 329

你真的会用subplot_adjust吗?,3分钟掌握专业级图表间距调整方案

掌握Matplotlib的subplot_adjust间距技巧,轻松解决多子图重叠问题。适用于复杂布局、科研绘图等场景,通过调整left、right、hspace等参数精准控制间距,提升图表可读性与美观度。方法简单高效,值得收藏。

SimTrans的博客 976

用C++从零复刻Wordle:手把手教你实现命令行猜词游戏(含完整源码解析)

本文详细介绍了如何使用C++从零开始实现一个命令行版本的Wordle猜词游戏,包含完整的源码解析和核心模块设计。通过游戏逻辑控制器、单词库管理器等模块的构建,开发者可以学习C++实战技巧和性能优化方法,适合提升编程能力和游戏开发兴趣。

weixin_26763955的博客 334

揭秘Matplotlib子图重叠难题:如何用subplot_adjust精准调控图表间距

轻松解决Matplotlib子图重叠问题,掌握subplot_adjust间距调控技巧。本文详解如何通过调整left、right、top、bottom及wspace、hspace参数,精准控制多子图布局,适用于复杂图表排版场景。提升可视化美观性与可读性,值得收藏。

CodeIsle的博客 796

光电式烟雾传感器实战指南(一) 光迷宫设计与散射原理篇

本文深入解析了光电式烟雾传感器的核心部件——光迷宫的设计原理与光散射机制。文章详细阐述了如何通过精心设计的光学结构实现‘透气不透光’,并重点探讨了前向散射(尤其是135°角)在提升烟雾监测系统灵敏度与可靠性中的关键作用,为DIY爱好者提供了从理论到实践的完整指南。

weixin_29229055的博客 586

RYU+Mininet的SDN架构-设计校园网络(一)

现有一个中学,需要设计一个中小型网络满足学校的网络需求。学校有教学区,实验室区域和服务器区域。教学区为了满足接入的灵活性和信号强度要求,需要满足设计WIFI满足日常教室和同学需求,接入上限为200人。实验室区域需要有一台教师主机方便管理实验室其余电脑,并且教师主机可以访问学校服务器,方便为同学们实验室授课。学校服务器区域设有学校相关重要文件和学校网页相关内容。最后学校还会接入互联网。

weixin_53284122的博客 8034

图表排版混乱?,一招教你用hspace完美调节子图垂直间距

解决Matplotlib子图重叠问题,一招掌握subplot_adjust的hspace用法。通过调节垂直间距参数hspace,轻松优化多子图布局,适用于科研绘图与数据可视化场景,让图表清晰美观。方法简单高效,值得收藏。

Instrulink的博客 1064

ESP32 TWAI CAN库实战:从零构建CyberGear微电机控制框架

本文详细介绍了如何利用ESP32的TWAI控制器和Arduino环境,从零构建一个面向对象的CyberGear微电机控制框架。该框架将复杂的CAN通信协议封装为简洁的API,开发者无需深究底层细节,即可轻松实现电机的速度、位置和扭矩控制,大幅简化机器人关节、云台等项目的开发流程。

oil88的博客 499

图表排版混乱?,一文搞懂subplot_adjust的黄金间距设置法则

解决Matplotlib图表排版混乱问题,掌握subplot_adjust的黄金间距设置法则。适用于多子图布局,通过调整left、right、top、bottom及wspace、hspace参数精准控制Matplotlib的subplot_adjust间距,实现美观整齐的可视化效果,值得收藏。

ProceSeed的博客 352

Modscan32连接上了却没数据?一文拆解所有报错(从“Device NOT CONNECTED”到“Checksum Error”)

本文深入解析Modscan32连接异常问题,从状态栏报错到数据异常,提供系统化的诊断思路和解决方案。涵盖物理层问题、配置参数错位、端口占用冲突等常见故障,帮助工程师快速定位和解决Modbus通信中的各类错误。

weixin_30384217的博客 397

无人机威胁检测(Hostile Drone Detection)——基于YOLOv10与UI界面的实现

Anti-UAV数据集由多种场景下的无人机视频与图片组成,包含无人机目标的多样化姿态、背景、光照变化,专门用于反无人机检测研究。YOLO(You Only Look Once)系列是当前流行的实时目标检测算法,具有速度快、精度高的特点。网络结构优化:更深更轻的主干网络,提升特征提取能力。检测头改进:多尺度特征融合,更好检测小型目标如无人机。训练技巧:使用自动混合精度训练(AMP)、数据增强、标签平滑等技术。

YOLO 231

hspace到底怎么调?,深度解析Matplotlib子图重叠问题与最佳实践

解决Matplotlib子图重叠难题,深入解析subplot_adjust的hspace参数调节技巧。涵盖垂直间距调整场景、布局优化方法及多子图排版最佳实践,避免标题与坐标轴遮挡问题,提升可视化美观度,值得收藏。

LogicNest的博客 323

RT-DETR算法优化改进:DCNv4更快收敛、更高速度、更高性能,效果秒杀DCNv3、DCNv2等 ,助力检测

DCNv4更快收敛、更高速度、更高性能,完美和RT-DETR结合,助力涨点

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1323

Matplotlib subplot_adjust参数详解(从入门到精通的间距优化指南)

掌握Matplotlib的subplot_adjust间距设置技巧,轻松解决多子图重叠问题。适用于复杂布局、科研绘图等场景,通过调整left、right、top、bottom及wspace、hspace参数精确控制间距,提升可视化美观度与可读性,值得收藏。

FuncIsle的博客 923

第七节:Vben Admin 最新 v5.0 (vben5) + Python Flask 快速入门 - 用户管理(上)

本节的内容是用户管理,后端Python代码的实现。

cuiwin的专栏 779

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【Matplotlib绘图进阶技巧】:彻底掌握subplot_adjust的hspace参数优化布局

掌握Matplotlib绘图布局难题,本文深入解析subplot_adjust的hspace参数调节技巧。适用于多子图垂直间距优化,避免标签重叠,提升可视化美观度。通过实例演示参数调优方法,实现精准排版,值得收藏。

VarFun的博客 421

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Matplotlib subplot_adjust hspace实战指南(99%的人都忽略的关键细节)

掌握Matplotlib subplot_adjust的hspace精准控制子图间距,解决多子图重叠难题。适用于复杂图表布局,通过调整垂直间距参数hspace优化可视化效果,提升图像可读性与美观度,99%人忽略的关键细节值得收藏。

ProceSeed的博客 605

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【数据可视化高手必备】:深入解析subplot_adjust中hspace的底层逻辑与应用技巧

掌握Matplotlib subplot_adjust的hspace设置技巧,解决多子图布局紧凑问题。详解垂直间距调节原理,适用于网格子图、批量绘图等场景,提升可视化美观度与可读性。底层参数解析+实战应用示例,值得收藏。

LearnPlex的博客 893

【Matplotlib绘图进阶技巧】:彻底掌握subplot_adjust中的hspace参数优化布局

掌握Matplotlib绘图布局优化技巧,解决子图重叠难题。本文深入解析Matplotlib subplot_adjust的hspace参数,涵盖垂直间距调整的适用场景、核心设置方法与可视化效果对比,提升多子图排版美观性与可读性,进阶绘图必看,值得收藏。

CodeIsle的博客 1006

Matplotlib subplot_adjust中hspace的5个关键用法(数据可视化布局必杀技)

掌握Matplotlib subplot_adjust的hspace,轻松解决子图重叠问题。本文详解其在多行图表布局中的5个关键用法,涵盖调整垂直间距、优化显示效果等场景,提升可视化美观度与可读性,数据科学家的布局必杀技,值得收藏。

AlgoInk的博客 389

【Matplotlib绘图进阶技巧】:掌握subplot_adjust间距控制的5大核心秘诀

掌握Matplotlib的subplot_adjust间距技巧,轻松解决多子图布局重叠问题。适用于复杂图表排版,通过调整left、right、top、bottom及wspace、hspace参数精确控制间距,提升可视化美观度与可读性,进阶绘图必备技能,值得收藏。

ByteShoal的博客 874

如何在Python中完美控制子图间距?:subplot_adjust的4种高阶应用场景

掌握Matplotlib的subplot_adjust间距技巧,轻松解决子图重叠问题。详解边距调整、多子图布局、共享坐标轴和动态排版4种高阶应用场景,精准控制图形空间分布,提升可视化美观度与可读性,值得收藏。

PoliVein的博客 878

掌握这3种hspace配置模式,让你的Matplotlib图表瞬间专业

掌握Matplotlib subplot_adjust的hspace配置技巧,轻松解决子图重叠问题。详解自动、固定值和动态计算3种模式,适用于多行图表布局,提升可视化专业度。合理设置hspace让图像清晰美观,值得收藏

InitPulse的博客 457

Matplotlib绘图效率提升秘籍(hspace参数调优的5个黄金法则)

掌握Matplotlib绘图布局优化技巧,本文深入解析subplot_adjust的hspace参数调优方法,解决子图间距重叠问题。涵盖多行子图、共享坐标轴等典型场景,提升可视化清晰度与专业性。5大实用法则一文掌握,值得收藏。

PoliVein的博客 694

【Python数据可视化避坑指南】:90%人都忽略的hspace调整细节

解决Matplotlib子图重叠难题,掌握subplot_adjust的hspace精准调节技巧。适用于多子图布局,避免标签遮挡,提升可视化美观度。通过设置垂直间距参数hspace优化图形排版,让图表更清晰易读。实用细节值得收藏。

CompiLume的博客 429

Matplotlib图表布局全解析:从边距调整到子图间距控制

在数据可视化中,图表布局是影响信息传达效果的关键因素。其核心原理在于控制图形容器(Figure)与绘图区域(Axes)之间的空间关系,通过调整边距(Margins)和间距(Spacings)来优化可读性。这一技术价值在于能够提升图表的专业性和清晰度,避免元素重叠或裁剪,确保数据故事被准确呈现。在实际应用场景中,无论是科研论文、商业报告还是仪表盘开发,合理的布局都至关重要。本文聚焦于Matplotlib中的布局控制,详细介绍了如何使用`tight_layout`、`constrained_layout`等自动

weixin_30512043的博客 383
上一篇: Pytest -x 参数到底多重要?一文看懂失败用例快速定位的核心逻辑
下一篇: 为什么你的Canny边缘检测效果差?真相竟是滞后阈值设置不当!
QuickDebug
博客等级 码龄1年 152粉丝 2013原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值