• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Matlab绘图基础——利用axes(坐标系图形对象)绘制重叠图像 及 一图多轴(一幅图绘制 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

描述

axes在当前窗口中创建一个包含默认属性坐标系

axes(\'PropertyName\',propertyvalue,...)创建坐标系时,同时指定它的一些属性,没有指定的使用DefaultAxes**,当然可以在以后使用set/get函数进行设置/读取,坐标系axes所有属性参见附录

axes(h)将坐标系h置为当前坐标系,同时将figure中的CurrentAxes属性设置为h,并且将h排列到children属性中第一个axes位置。默认情况,所有图形函数都是在当前坐标系上绘图

h = axes(...)创建坐标系时返回它的句柄,方便以后操作

注意:创建时有三种方式直接指定属性,无先后顺序,不区分大小写,效果一致

(1)Name/Value配对形式

axes(\'Position\',[0.2 0.2 0.6 0.6],\'XGrid\',\'on\',\'XTickLabel\',[])

(2)结构体形式

pp.Position=[0.2 0.2 0.6 0.6];

pp.XGrid=\'on\';

pp.XTickLabel=[];

axes(pp)

(3)细胞元组形式

Name={\'Position\',\'XGrid\',\'XTickLabel\'};

Value={[0.2 0.2 0.6 0.6],\'on\',[]};

axes(Name,Value)

 

应用实例1:绘制重叠图像

clear;close;
%% 先画第一个大图像
set(groot,\'defaultAxesColorOrder\',[0 0 0;1 0 0],...
      \'defaultAxesLineStyleOrder\',\'--|-|:|-.\');
    % groot refers to the graphics root object——help
    % 这里的设置对象(groot)不能是h1或h2,否则不起作用
    % 设置绘制点线的样式和他们的顺序,这里设置的顺序依次为:
        % 黑色虚线、红色虚线;黑色实线、红色实线;黑色点点、红色点点;黑色点线、红色点线
h1=axes(\'position\',[0.08 0.1 0.85 0.85]); % 创建一个坐标系
    %让 坐标轴的左下角 与 窗口左侧 的距离时窗口宽度的8%,距离下侧10%
    %整个坐标轴的宽占85%,高占85%。一个小框就出来了
axes(h1);     %将h1设置为当前坐标系,为绘图准备
Z = peaks; x = 1:length(Z);y = Z(3:10,:);
plot(x,y);   axis(h1,[0,49,-6,0.5]);  %坐标轴句柄h1不能少!
    %画图     %x的坐标范围是0到2π,y的范围是-0.5到0.5
legend(\'黑色虚线\',\'红色虚线\',\'黑色实线\',\'红色实线\',\'黑色点点\',\'红色点点\',\'黑色点线\',\'红色点线\')
 
%% 在原图上插入一个新的小图像
set(groot,\'defaultAxesLineStyleOrder\',\'remove\',\'defaultAxesColorOrder\',\'remove\');
    %每次使用记得清除上次设置的参数,否则设置的参数会被保留下来
h2=axes(\'Position\',[0.1 0.12 0.3 0.3]); 
   % 建立的坐标轴把原来的覆盖了是吧?这说明建立坐标轴是在绘图(点、线)之前
axes(h2);                  % 将h2设置为当前坐标系
plot(rand(10,3));
set(h2,\'xticklabel\',\'\',\'yticklabel\',\'\')  %设置x轴和y轴的标注不显示
axis tight; colorbar;                    %可以发现这里的axis和colorbar只对h2起作用

应用实例2:一幅图绘制多个坐标轴

% 数据准备
x1=0:0.01:10;y1=sin(x1);
x2=0:0.01:10;y2=cos(x2);
% 设置坐标系
ax1=gca;set(ax1,\'XColor\',\'r\',\'YColor\',\'r\');
ax2=axes(\'Position\',get(ax1,\'Position\'),...
    \'XAxisLocation\',\'top\',\'YAxisLocation\',\'right\',...
    \'Color\',\'none\',\'XColor\',\'k\',\'YColor\',\'k\');
    % XAxisLocation和YAxisLocation属性指定在图形的哪一侧放置x轴和y轴
    % Color属性将ax2设置为透明,若没有则ax1绘制的图像会被覆盖
% 展绘数据
h1=line(x1,y1,\'Color\',\'r\',\'Parent\',ax1);
h2=line(x2,y2,\'Color\',\'k\',\'Parent\',ax2);

应用实例3:结合axis,axes,colorbar等工具,制作一个数字图像灰度统计图

注:axis设置坐标轴取值范围可以参考这里:https://www.cnblogs.com/stxs/p/8617140.html 

% 数据生成及展示(真实情况可以用数字图像代替)

set(groot,\'defaultAxesLineStyleOrder\',\'remove\',\'defaultAxesColorOrder\',\'remove\');

%每次使用记得清除上次设置的参数,否则设置的参数会被保留下来

x=1:255;y=rand(1,255);y=y\';%y是行向量还是列向量都无所谓

n=length(x);

stem(x,y, \'Marker\', \'none\');

title(\'未设置坐标轴的区间\',\'fontsize\',14);

% 坐标轴区间的自动设置(适用于直方图的显示)

% Get x/y limits of axes using axis

hist_axes = gca;

limits = axis(hist_axes);

if n ~= 1 %当只有一个值时设置x坐标轴

limits(1) = min(x);

else

limits(1) = 0;

end

limits(2) = max(x);

var = sqrt(y\'*y/length(y));

limits(4) = 2*var; % 只改变了y轴显示的高度

axis(hist_axes,limits);

title(\'设置了的坐标轴区间\',\'fontsize\',14);

% 改变图像的位置,宽和高,隐藏X轴的标注

% In GUIDE, default axes units are characters. In order for axes repositiong

% to behave properly, units need to be normalized.

hist_axes_units_old = get(hist_axes,\'units\');

set(hist_axes,\'Units\',\'Normalized\');

 

% 隐藏X轴的标注

% hist_axes.XAxis.Visible = \'off\';

% 上面一句也可以隐藏Ticks,同时Box的上端也隐藏了,这就使得图像看上去不太好看

% 下面这一句可以只隐藏Ticks;

hist_axes.XTick= [];

 

% Get axis position and make room for others.

pos = get(hist_axes,\'pos\');

set(hist_axes,\'pos\',[pos(1) 0.15 pos(3) 0.75])

set(hist_axes,\'Units\',hist_axes_units_old); % 坐标向上移动了,相应也调整了整个图众向比例

title(\'移动了的坐标原点\',\'fontsize\',14);

% 设置ColorBar

c = colorbar(\'position\',[pos(1) 0.1 pos(3) 0.05], \'location\',\'southoutside\');

c.Ticks= 0:0.125:1;

c.TickLabels = ceil((0:0.125:1)*255); % 使用floor函数,Ticks与真实值似乎有偏差

c.Box = \'off\'; % 取消显示ColorBar的框框,这样使ColorBar的上框线看起来不粗

c.TickDirection = \'both\';

colormap gray;

% colorbar最左下角点的横坐标、纵坐标、宽度、高度

title(\'一个灰度统计图的绘制就完成了\',\'fontsize\',14);


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
DesignPattern----19.Behavioral.Iterator.Pattern(DelphiSample)发布时间:2022-07-18
下一篇:
Delphi实现远程控制发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap