Matlab让图片充满窗口的方法整理

本文介绍了如何在Matlab中使用不同的方法使图片充满窗口,包括手动调整图片窗口选项、使用代码设置LooseInset和tight_subplot函数实现自动调整子图位置,以便在Latex论文中获得无空白边距的图像布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Matlab 让图片充满窗口的方法整理

在此处写一个blog,记录一下最近在写论文中遇到的一个问题以及相应的解决办法;在使用Latex撰写论文时,常常需要使插入的图片周围没有空白间隙,即如下图所示:
一张单图片充满

单张图充满整个窗口的方法

实现上图的效果的方法主要有两种,其中第一种方法操作方法为:在图片窗口选项上依次选择:文件 -> 导出设置 -> 勾选放大坐标区至充满图窗 ->应用于图窗
单张充满method1
然后就可以实现以下效果
单张充满method1效果
当然除了上面的方法手动勾选的方法,更加推荐使用添加一句代码,就能实现的方法

set(gca,'LooseInset', get(gca,'TightInset'))

当然这种方式还可以控制上下左右空白间隙的大小,例如宽度方向空白区域0.02,高度方向空白区域0.04

set(gca,'looseInset',[0 0 0.02 0.04]);

多张子图充满窗口的方法

上面所述的单张图片充满窗口的方法固然简单,但是可惜的是,这些方法在画图窗口有多张子图的时候就会失效,例如使用subplot函数,为解决这个问题,此处提供3种方法!

第一种方法

第一种方法是比较直接的方法,就是直接更改fig的参数属性,本质上就是手动拉动fig的大小,使figs充满整个图窗。操作方法:点击图窗上的小箭头 -> 选中需要更改的fig -> 左击 -> 选择属性检查器 -> 找到Position属性 -> 调整属性参数,达到想要的效果。
其中Posiition属性包含四个元素,其中前两个元素,即x和y决定fig的左下角在图窗中的位置,width表示fig的横向宽度,height表示纵向高度。

在这里插入图片描述

但是我们在科研中往往需要频繁地更改图片中的数据等等,这样每次都来这样的操作就会很繁琐!所以更加推荐下面的两种方法。

第二种方法

该方法就是在第一种方法上建立起来的,因为笔者自己习惯使用subplot函数,所以将第一种方法在常见的子图竖着排列,且只有2-3张子图的情况下,写成了函数,该函数的Matlab代码为

function [subfig_1_position_size,subfig_2_position_size,subfig_3_position_size] = my_tight_subplot(f2_1,f2_2,f2_3)
% MY_TIGHT_SUBPLOT 
%  
narginchk(2,3);
figs = nargin; %number of figs

%% getting property of fig position and size
subfig_1_position_size = get(f2_1,'Position');
subfig_2_position_size = get(f2_2,'Position');
if figs >2
    subfig_3_position_size = get(f2_3,'Position');
end
%% setting parameters
left_gap  = 0.08;
right_gap = 0.02;
top_gap   = 0.00;
bottom_gap = 0.0;
figs_gap  = 0.00;
text_height = 0.06;

%% reshaping 
subfig_1_position_size(1) = left_gap;
subfig_2_position_size(1) = left_gap;

subfig_1_position_size(3) = 1-left_gap-right_gap;
subfig_2_position_size(3) = 1-left_gap-right_gap;

fig_height = (1-text_height*figs*3-top_gap-bottom_gap-(figs-1)*figs_gap)/figs;
subfig_1_position_size(2) = 1-text_height-fig_height-top_gap;
subfig_2_position_size(2) = subfig_1_position_size(2)-figs_gap-fig_height-3*text_height;

subfig_1_position_size(4) = fig_height;
subfig_2_position_size(4) = fig_height;

set(f2_1,'Position',subfig_1_position_size);
set(f2_2,'Position',subfig_2_position_size);


if figs >2
    subfig_3_position_size(1) = left_gap;
    subfig_3_position_size(3) = 1-left_gap-right_gap;
    subfig_3_position_size(2) = subfig_2_position_size(2)-figs_gap-fig_height-3*text_height;
    subfig_3_position_size(4) = fig_height;
    set(f2_3,'Position',subfig_3_position_size);
end

end



其中需要说明的是,我将fig参数设置也放在了函数内部,当然也可以改为从外部传参,这些参数分别为

%% setting parameters
left_gap  = 0.02; %fig左边的空白间隔
right_gap = 0.02; %fig右边的空白间隔
top_gap   = 0.02; %fig顶部的空白间隔
bottom_gap = 0.0; %fig底部的空白间隔
figs_gap  =  0.1; %fig与fig之间的间隔
text_height = 0.06; %字体高度

以下是一个简单的使用例子

clc
clear
close all

x = 0:0.1:10;
y_1 = sin(x);
y_2 = cos(x);
y_3 = sin(x+pi);

figure()
f1 = subplot(3,1,1);
plot(x,y_1)
title('(a)')
ylabel('Amplitude')
xlabel('time')
set(gca, 'Fontname', 'Times New Roman','FontSize',12);

f2 = subplot(3,1,2);
plot(x,y_2)
title('(b)')
ylabel('Amplitude')
xlabel('time')
set(gca, 'Fontname', 'Times New Roman','FontSize',12);

f3 = subplot(3,1,3);
plot(x,y_3)
title('(c)')
ylabel('Amplitude')
xlabel('time')


set(gca, 'Fontname', 'Times New Roman','FontSize',12);
my_tight_subplo(f1,f2,f3);

% % set(gca,'LooseInset', get(gca,'TightInset'))
% set(gca,'looseInset',[0 0 0.02 0.04]);

可以看出使用方法超级简单,并且我还是用了subplot函数,最终的效果图
在这里插入图片描述

第三种方法

第三种方法就是的tight_subplot函数,具体使用方法和相关函数此处就不再赘述,请参考这篇博客
tight_subplot

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值