Matlab绘图中的一些技能

这篇具有很好参考价值的文章主要介绍了Matlab绘图中的一些技能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、matlab坐标轴设置多种字体(复合字体)

2、matlab图片中title生成的标题转移至图像下端

3、指定对应格式和期望dpi的图像进行保存、以及不留白保存

4、设置字体字号(x、y轴,标题。全局字体等)

5、设置刻度值信息,只有左、下有边框等

6、指定x、y轴刻度值

7、利用插值绘制热力图、或无插值热力图

 8、自定义RGB颜色绘图

9、绘制多个组图、及相关设置。包括组图x、y轴标签、标题,以及组图色条等

10、自定义色条标签

11、颜色条反转

12、matlab figure 调整大小

13、更值得推荐的组图绘制方法(tight_subplot,可自定义间隔)


clc;       %clc的作用就是清屏幕
clear;     %clear是删除所有的变量
closeall;  %close all是将所有打开的图片关掉。

Matlab的帮助文档、很全面,非常好:图形 - MATLAB & Simulink - MathWorks 中国

https://ww2.mathworks.cn/help/releases/R2020a/matlab/graphics.html?s_tid=CRUX_lftnav

1、matlab坐标轴设置多种字体(复合字体)

x = 0:0.01:2*pi;
y = sin(x);
plot(x,y);
xlabel(['\fontname{宋体}长度\fontname{Times new roman} (mm)'])

2、matlab图片中title生成的标题转移至图像下端

xlabel({'bbb','ccc'})

3、指定对应格式和期望dpi的图像进行保存、以及不留白保存

方法一:无法去除留白

img =gcf;  %获取当前画图的句柄
print(img, '-dpng', '-r600', './img.png')  %即可得到对应格式和期望dpi的图像

方法二:可以去除留白

也可以使用 exportgraphics 函数保存内容,此函数从 R2020a 开始提供。此函数围绕您的内容提供相同的精确裁剪,还提供了其他选项。例如,您可以保存图像文件并指定分辨率。

img =gcf;  %获取当前画图的句柄
exportgraphics(img,'myplot.png','Resolution',300)  %即可得到对应格式和期望dpi的图像

4、设置字体字号(x、y轴,标题。全局字体等)

% 字体和字号
hTitle = title('Visualization of air flow data over North America'); % 设置标题
hXLabel = xlabel('xaxis'); % 设置x轴标签
hYLabel = ylabel('yaxis','FontSize', 11); % 设置y轴标签
set(gca, 'FontSize', 10, 'FontName', 'Arial') % 设置全局字体
set([hXLabel, hYLabel], 'FontSize', 11, 'FontName', 'Arial') % 设置x、y轴标签字体

5、设置刻度值信息,只有左、下有边框等

set(gca, 'Box', 'off', ...                                   % 边框
         'LineWidth',1,...                                   % 线宽
         'XGrid', 'off', 'YGrid', 'off', ...                 % 网格
         'TickDir', 'out', 'TickLength', [.02 .01], ...      % 刻度
         'XMinorTick', 'off', 'YMinorTick', 'off', ...       % 小刻度
         'XColor', [.1 .1 .1],  'YColor', [.1 .1 .1])        % 坐标轴颜色

6、指定x、y轴刻度值

xticks([2,4,6,8,10])
% xticklabels({'2','4','6','8','10'})

yticks([1,2,3,4])
% yticklabels({'1','2','3','4'})

7、利用插值绘制热力图、或无插值热力图

x=[2,4,6,8,10];
y=[1,2,3,4];
[x_grid,y_grid]=meshgrid(x,y);
z= [95,92,94,91,90;
    84,98,87,89,95;
    86,95,89,91,95;
    91,90,92,94,93];

% 进行插值的重要参数shading interp;
pcolor(x_grid,y_grid,z);colormap("parula");shading interp;colorbar;

或者这样绘制插值热力图:

s=pcolor(x_grid,y_grid,z);colormap("parula");colorbar;
s.FaceColor = 'interp'; % 插值
set(s,'linestyle','None'); % 不显示网格

绘制无插值热力图:

s=pcolor(x_grid,y_grid,z);colormap("parula");colorbar;
set(s,'linestyle','-','EdgeColor',[1 1 1]); % 设置网格样式和颜色

 8、自定义RGB颜色绘图

color_1=[0 0 128]/255;
color_2=[121 255 125]/255;
color_3=[128 0 0]/255;

num12=100;num23=100;
R_mat=[linspace(color_1(1),color_2(1),num12),linspace(color_2(1),color_3(1),num23)];
G_mat=[linspace(color_1(2),color_2(2),num12),linspace(color_2(2),color_3(2),num23)];
B_mat=[linspace(color_1(3),color_2(3),num12),linspace(color_2(3),color_3(3),num23)];
color_map_RGB=[R_mat',G_mat',B_mat'];
figure(2)

pcolor(x_grid,y_grid,z);colormap(color_map_RGB);colorbar;

9、绘制多个组图、及相关设置。包括组图x、y轴标签、标题,以及组图色条等

  • 组图绘制

方法一:即在设置好绘图参数后,绘制下一个图时使用 nexttile 命令。可以压缩间隔。非常推荐。点击链接查看使用方法

从 R2019b 开始,您可以使用 tiledlayout 函数在图窗中创建分块图。该函数具有用于最小化绘图周围空间的选项。

通过调用 tiledlayout 函数,创建一个 2×2 分块图布局。要最小化绘图之间的空间,请将 'TileSpacing' 名称-值对组参数设置为 'compact'。要使布局周围的空间最小化,请将 'Padding' 名称-值对组参数设置为 'compact'。下一步,调用 nexttile 函数创建第一个坐标区,并调用 plot 函数在坐标区中绘图。然后再创建三个坐标区和绘图。

t = tiledlayout(2,2,'TileSpacing','Compact','Padding','Compact');
nexttile
plot([0 1])
nexttile
plot([1 0])
nexttile
plot([0 1 0 1])
nexttile
plot([1 0 1 0])

Matlab绘图中的一些技能

如何自定义组图,例如一图占两列等

调用 nexttile 函数以创建占据两行三列的坐标区对象。

nexttile([2 3]); % 即修改此代码,占两行三列。此时绘图应该在上一个nexttile之后,后一个图需要占占两行三列的情况
bar([1 2 3 4],scores)
legend('Team 1','Team 2','Team 3','Location','northwest')

% Configure ticks and axis labels
xticks([1 2 3 4])
xlabel('Game')
ylabel('Score')

% Add layout title
title(t,'April Bowling League Data')

Matlab绘图中的一些技能

直接指定在第几个框画图:

要从特定位置开始放置坐标区对象,请指定图块编号和跨度值。

t = tiledlayout(3,3);
nexttile(7)

Matlab绘图中的一些技能

更加灵活的使用:

显示一个带有图例的较大绘图。调用 nexttile 函数以将坐标区的左上角放在第五个图块中,并使坐标区占据图块的两行和两列。绘制所有团队的分数。将 x 轴配置为显示四个刻度,并为每个轴添加标签。然后在布局顶部添加一个共享标题。

nexttile(5,[2 2]);

Matlab绘图中的一些技能

方法二:直接调用 subplot,用法和python一样。但是好像不能压缩间隔。

从 R2019b 开始,您可以使用 tiledlayout 函数在图窗中创建分块图。该函数具有用于最小化绘图周围空间的选项。(如果您使用的是较早的版本,您可以使用 subplot 函数来创建分块图。不过,subplot 函数没有用于控制绘图周围空间的选项。

figure(1)           % define figure
subplot(2,2,1);     % subplot(x,y,n)x表示显示的行数,y表示列数,n表示第几幅图片
plot([0 1])
subplot(2,2,2);
plot([1 0])
subplot(2,2,3);
plot([0 1 0 1])
subplot(2,2,4);
plot([1 0 1 0])

Matlab绘图中的一些技能

  • 组图标签

通过使添加共享标题和共用轴标签ttitlexlabelylabel功能。通过移除移动地块靠得更近X从上图轴刻度标记和设置TileSpacing的属性t'compact'。 

% Add shared title and axis labels
title(t,'My Title');
xlabel(t,'x-values');
ylabel(t,'y-values');

% xticklabels(ax1,{1,5}); %定义ax1图的x轴标签
t.TileSpacing = 'compact';
  •  组图色条
%设置组图的色条
cb = colorbar;
cb.Layout.Tile = 'east';

Matlab绘图中的一些技能

10、自定义色条标签

contourf(peaks)
colorbar('Ticks',[-5,-2,1,4,7],...
         'TickLabels',{'Cold','Cool','Neutral','Warm','Hot'})

Matlab绘图中的一些技能

 给色条添加标题

surf(peaks)
c = colorbar;
c.Label.String = 'Elevation (ft in 1000s)';

Matlab绘图中的一些技能

11、颜色条反转

使用flipud() 函数

colormap(flipud(map));

12、matlab figure 调整大小

set (gcf,'Position',[500,300,520,260])

13、更值得推荐的组图绘制方法(tight_subplot,可自定义间隔)

前面第9部分讲述了利用 tiledlayout 进行组图绘制,然而可能会出现间隔还是很大的问题:

Matlab绘图中的一些技能

为了解决这个问题,我们可以利用自定义函数tight_subplot来解决。

  • 自定义函数如下(保存的时候,函数名命名为:tight_subplot):
function ha = tight_subplot(Nh, Nw, gap, marg_h, marg_w)

% tight_subplot creates "subplot" axes with adjustable gaps and margins
%
% ha = 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
%                   going row-wise as in
%
%  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 20.6.2010   @tut.fi
% Tampere University of Technology / Automation Science and Engineering


if nargin<3; gap = .02; end
if nargin<4 || isempty(marg_h); marg_h = .05; end
if nargin<5; marg_w = .05; end

if 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];
end

axh = (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:Nh
    px = marg_w(1);

    for ix = 1:Nw
        ii = ii+1;
        ha(ii) = axes('Units','normalized', ...
            'Position',[px py axw axh], ...
            'XTickLabel','', ...
            'YTickLabel','');
        px = px+axw+gap(2);
    end
    py = py-axh-gap(1);
end

在函数建立好后,我们在主页的路径设置中导入即可使用。

  • 使用方法如下:
[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)是距右边缘的距离。

相关参数可见下图示意

Matlab绘图中的一些技能

Matlab绘图中的一些技能

应用示例:

ha = tight_subplot(1,2,[0.03 0.01],[.1 .01],[.01 .01]);
for ii = 1:2; 
    axes(ha(ii)); 
    imshow(imread("th.jpg"));
end

Matlab绘图中的一些技能

可以很明显的看出间距的调整,可以自定义gap、marg_h、marg_w的参数,找到适合自己的间距。这时相比于之前的间隔非常小,非常nice.

此外,我们可以批量设置多个组图参数:

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','');  % 批量设置多个组图参数

Matlab绘图中的一些技能

最后,可以通过设置以下参数保存图像、画布大小等文章来源地址https://www.toymoban.com/news/detail-425913.html

set (gcf,'Position',[500,300,520,460]) # 设置画布大小,和前面的tight_subplot组合使用更好
img =gcf;  %获取当前画图的句柄
exportgraphics(img,'12.png','Resolution',600) 

到了这里,关于Matlab绘图中的一些技能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • matlab设置坐标轴的坐标显示范围和刻度

    所用代码: 逐个演示代码结果:   参考资料: matlab设置x轴和y轴的坐标显示范围和刻度_matalb的极坐标图如何将坐标标出来_phymat.nico的博客-CSDN博客

    2024年02月09日
    浏览(72)
  • MATLAB: 调整坐标轴范围

    MATLAB: 调整坐标轴范围 在MATLAB中,可以使用一些方法来设置坐标轴的范围。通过调整坐标轴范围,可以改变绘图的可视化效果,并突出显示感兴趣的数据。本文将介绍一些常用的方法和示例代码。 使用axis函数设置坐标轴范围 axis函数是MATLAB中常用的设置坐标轴的函数之一。它

    2024年02月06日
    浏览(44)
  • Matlab中如何调整坐标轴刻度

    Matlab中如何调整坐标轴刻度 在Matlab中,我们经常需要对绘图中的坐标轴刻度进行调整,以便更好地展示数据。本文将介绍如何使用Matlab来调整坐标轴刻度,并提供相应的源代码示例供参考。 Matlab提供了多种方法来调整坐标轴刻度。下面我们将介绍其中的两种常用方法:手动

    2024年02月05日
    浏览(66)
  • Matlab隐藏坐标轴/数字/刻度线

    目录 一、隐藏坐标轴的数字 二、隐藏坐标轴的刻度 三、隐藏坐标轴 四、隐藏坐标区 五、修改坐标区背景颜色  六、修改图片背景颜色 一、隐藏坐标轴的数字 以X轴为例,在画图的代码后面增加以下设置: 二、隐藏坐标轴的刻度 三、隐藏坐标轴 四、隐藏坐标区 或者   五、

    2024年01月24日
    浏览(48)
  • 如何使Matlab输出图像坐标轴居中

    PS:写在前端,好久没有用CSDN了,现在公司入职,重新拾起社区文化,发扬总结和共享精神。 这个小点源于一位做深度学习的朋友,输出深度学习代表性函数的函数图像,由此找我帮忙找到解决方案。 首先,给出目标图像。 在这里,MATLAB一般是输出的结果为框线结果显示,

    2024年02月16日
    浏览(47)
  • MATLAB 之 图形对象及其句柄和图形窗口与坐标轴

    MATLAB 的图形系统是面向图形对象的。图形对象是 MATLAB 图形元素的集合,是用于显示图形和设计用户界面的基本要素。 在 MATLAB 中,每一个具体的图形都是若干个不同的图形对象组成的。所有的图形对象都按父对象和子对象的方式组成层次结构,其形式如下图所示。 在图形对

    2024年02月09日
    浏览(49)
  • Matlab图坐标轴数值负号改为减号(change the hyphen (-) into minus sign (−, “U+2212”))

    在MATLAB中,坐标轴负数默认符号是 - ,如下图所示 可通过以下两语句将负号修改为减号: 或者 示例: 参考链接:change the hyphen (-) into minus sign (−, “U+2212”)

    2024年02月12日
    浏览(40)
  • R语言绘图-5-条形图(修改坐标轴以及图例等)

    1. 绘制条形图; 2. 添加文本并调整位置; 3. 调整x轴刻度的字体、角度及颜色; 4. 在导出pdf时,如果没有字体,该怎么解决问题;

    2024年02月08日
    浏览(43)
  • 用MATLAB/Simulink对实验/仿真示波器保存的数据进行THD分析、MATLAB自定义横纵坐标轴绘图

    最近年底和师兄交流了数据分析、波形处理问题。一个是将示波器导出的csv数据放到MATLAB中进行THD分析,另一个是自定义横纵坐标轴进行绘图,就这两个问题记录一下。 不需要背代码,简单、易于理解,使用过程中截个图就行了。 1、导入数据至MATLAB,修改变量名和数据类型

    2024年01月22日
    浏览(71)
  • Matlab中的基本绘图操作,Matlab中如何绘图

    目录 一.示例基本程序 二.图片 三.说明         1.首先应该给定初值 2.matlab中的Π用pi代替 3.figure的作用是建立一个幕布,有时可以不写 4.plot( x=sin(x))作用是绘制一幅 x=sin(x)当前函数的图 5.title(\\\'   x=sin(x) \\\')的中可以添加图片的标题 x=sin(x) 6.xlabel(‘  x   ’)与ylabel(

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包