Matlab子图间距和边缘距离调整
MATLAB绘图,尤其是绘制多子图时,会在周围留下许多空白,子图的间距有时也需要更改,但是subplot并没有提供这个功能,手动修改太过麻烦。
一共有两种方法可以解决这个问题
(1)使用tight_subplot函数,替代subplot进行绘图设置。
(2)matlab2019b及以后版本,tiledlayout函数也可以实现减小空白区域的功能

1.tight_subplot函数
函数的源码参考这个链接:https://www.mathworks.com/matlabcentral/fileexchange/27991-tight_subplot-nh-nw-gap-marg_h-marg_w 用起来也是十分方便的。

如果你下载不下来,这里把源码贴出来,你自己创建一个.m文件就行了。

function [ha, pos] = tight_subplot(Nh, Nw, gap, marg_h, marg_w)% tight_subplot creates "subplot" axes with adjustable gaps and margins
%
% [ha, pos] = tight_subplot(Nh, Nw, gap, marg_h, marg_w)
%
%   in:  Nh      number of axes in hight (vertical direction)
%        Nw      number of axes in width (horizontaldirection)
%        gap     gaps between the axes in normalized units (0...1)
%                   or [gap_h gap_w] for different gaps in height and width
%        marg_h  margins in height in normalized units (0...1)
%                   or [lower upper] for different lower and upper margins
%        marg_w  margins in width in normalized units (0...1)
%                   or [left right] for different left and right margins
%
%  out:  ha     array of handles of the axes objects
%                   starting from upper left corner, going row-wise as in
%                   subplot
%        pos    positions of the axes objects
%
%  Example: ha = tight_subplot(3,2,[.01 .03],[.1 .01],[.01 .01])
%           for ii = 1:6; axes(ha(ii)); plot(randn(10,ii)); end
%           set(ha(1:4),'XTickLabel',''); set(ha,'YTickLabel','')% Pekka Kumpulainen 21.5.2012   @tut.fi
% Tampere University of Technology / Automation Science and Engineeringif nargin<3; gap = .02; end
if nargin<4 || isempty(marg_h); marg_h = .05; end
if nargin<5; marg_w = .05; endif numel(gap)==1; gap = [gap gap];
end
if numel(marg_w)==1; marg_w = [marg_w marg_w];
end
if numel(marg_h)==1; marg_h = [marg_h marg_h];
endaxh = (1-sum(marg_h)-(Nh-1)*gap(1))/Nh;
axw = (1-sum(marg_w)-(Nw-1)*gap(2))/Nw;py = 1-marg_h(2)-axh; % ha = zeros(Nh*Nw,1);
ii = 0;
for ih = 1:Nhpx = marg_w(1);for ix = 1:Nwii = ii+1;ha(ii) = axes('Units','normalized', ...'Position',[px py axw axh], ...'XTickLabel','', ...'YTickLabel','');px = px+axw+gap(2);endpy = py-axh-gap(1);
end
if nargout > 1pos = get(ha,'Position');
end
ha = ha(:);

函数调用格式为:

[ha,pos]=tight_subplot(Nh,Nw,gap,marg_h,marg_w)
% ha 是坐标轴句柄,pos是每个坐标轴的原点与长宽
% Nh,Nw 可以认为是几行几列
% gap是子图的纵向和横向间距,gap(1)为纵向,gap(2)为横向
% marg_h是图件与上下边缘的距离,marg_h(1)为距下边缘的距离,marg_h(2)是距上边缘的距离
% marg_w 是图件与左右边缘的距离,marg_w(1)为距左边缘的距离,marg_w(2)是距右边缘的距离。

相关参数可见下图示意

应用示例:

ha = tight_subplot(3,2,[.01 .03],[.1 .01],[.01 .01])for ii = 1:6; axes(ha(ii)); plot(randn(10,ii)); endset(ha(1:4),'XTickLabel',''); set(ha,'YTickLabel','')

可以很明显的看出间距的调整,可以自定义gap、marg_h、marg_w的参数,找到适合自己的间距。

  1. matlab2019b以后的版本有tiledlayout

Matlab plot子图的间距和边缘距离如何调整(已解决)相关推荐

  1. Matlab子图间距和边缘距离调整

    Matlab子图间距和边缘距离调整 MATLAB绘图,尤其是绘制多子图时,会在周围留下许多空白,子图的间距有时也需要更改,但是subplot并没有提供这个功能,手动修改太过麻烦. 一共有两种方法可以解 ...

  2. python opencv卡尺测量边缘距离

    opencv 卡尺法 测量边缘距离 参考来源 :https://github.com/crackwitz/metrology-demo 前言 一.测量方法 二.测量步骤 1.获取直线的像素 2.高斯滤 ...

  3. 【计算机科学】【2011.05】【含源码】微阵列数据的SVM分类与边缘距离分析

    本文为美国阿克伦大学(作者:Ameer Basha Shaik Abdul)的硕士论文,共84页. 支持向量机是一种统计分类算法,它借助于泛函超平面将两类数据分开进行分类.SVM在噪声和高维数据(如微 ...

  4. matlab yticklable,Matlab绘制XTickLabel有效字符串(Matlab Plot XTickLabel valid strings)

    Matlab绘制XTickLabel有效字符串(Matlab Plot XTickLabel valid strings) 我有一个情节: x = [0 1 2 3]; y = [0 0 1 1]; ...

  5. opencv 卡尺法 测量边缘距离

    opencv 卡尺法 测量边缘距离 参考来源 :https://github.com/crackwitz/metrology-demo 文章目录 opencv 卡尺法 测量边缘距离 前言 一.测量方法 ...

  6. MATLAB plot 画折线图的常用命令总结

    MATLAB plot 画折线图的常用命令总结 目录 MATLAB plot 画折线图的常用命令总结 写在前面的话 1 plot的数据内容 1.1 希望画的数据 1.2 折线图的点(空心实心).颜色. ...

  7. matlab subplot子图丢失,Matlab绘制子图subplot使用操作方法

    Matlab绘制子图subplot如何使用?下面是小编介绍Matlab绘制子图subplot使用操作方法,有需要的一起来下文看看吧,希望可以帮助到大家! Matlab绘制子图subplot使用操作方法 ...

  8. matlab plot画图指定线型和颜色

    matlab plot画图指定线型和颜色 plot(x,y1,'.b'); %b代表蓝色,.代表点; plot(x,y2,'-g'); %g代表绿色,-代表线

  9. MATLAB plot画图后横轴去除空白

    MATLAB plot画图后横轴去除空白 MATLAB plot原来画图都是填充满的,今天不知道怎么了,横轴留有一部分空白,看起来十分不美观,可以修改一下上下限使其美观一些. 方法 x轴上下限设定 x ...

最新文章

  1. R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、编写自定义函数在三线表中添加p值
  2. c语言实现将两个文件复制到一个文件里_Python中复制文件的9种方法
  3. 【网络安全】黑客是怎么利用私服游戏远控电脑的呢?
  4. html title 不显示_第2天:HTML 结构
  5. Tensorflow—tfrecord数据集生成与使用
  6. Excel 数据分析技巧
  7. OAuth2.0授权流程分析
  8. 一个字符串排列的小算法
  9. python文件重命名加日期_Python文件创建日期和重命名 - 批评请求
  10. MEncoder的基础用法—6.2. 选择输入文件或设备
  11. 机器学习,斯坦福公开课
  12. bpmn-js所有事件
  13. 如何使用自己的云服务器做代理服务器
  14. 基于STM32与GSM模块发送中英文短信
  15. Kali/Ubuntu GVM (openvas)安装及使用
  16. CAS . . . .
  17. 神经网络的严冬与复兴之路
  18. bzoj4275[ONTAK2015]Badania naukowe DP
  19. mysql delete删除速度慢_MYSQL-DELETE优化
  20. 十二个小球,一个坏球,3次比较找出坏的那个

热门文章

  1. 5.2 Python 赋值运算符
  2. csdn怎么让代码变得好看_是什么让游戏变得更好
  3. PMP项目管理—干系人问题
  4. 人体神经构成结构示意图,神经元结构示意图简易
  5. 有赞下拉菜单html,python selenium自动上传有赞单号的操作方法
  6. Unity实战篇 | 自己制作一个《大转盘抽奖》 小程序,顺便带你看看抽奖的水可以有多深
  7. 考虑不同充电需求的电动汽车协调充电调度方法 提出了一种电动汽车(EV)的协调充电调度方法
  8. 从键盘输入一批字符,以@结束,按要求加密并输出。输出占一行 加密规则: 1)、所有字母均转换为小写。 2)、若是字母'a'到'y',则转化为下一个字母。 3)、若是'z',则转化为'a'。
  9. Java(35):Java Base64编码和解码工具类
  10. MySQL查询满足条件的连续时间段