【Matlab】关于axes和figure对象的关系
2016-01-05 14:59
330 查看
axes和figure都属于graphics object,用于绘图与图像显示,既然是两种东西,当然两者之间并不是等同的关系,下面将就几个问题进行解释,让大家正确区分这两个概念。
第一:什么是figure?
figure的翻译是图像,这个谁都知道,但是在matlab中的figure对象准确意义应该是:matlab软件用于直观性图形输出的窗口个体,这个概念很多人没有。
用Figure命令时,它默认会帮你建立个Axes,你可以用gca得到它。
第二:什么是axes?
一张白纸上可以画画,你可以在纸上的任何区域画,这个确定画图区域并确定作图的一些方式的东西的就是axes,也就是坐标对象。画图的作用就是,在当前的活动figure对象中的一个坐标对象上作图。
Axes一般常用在你想将多幅图放在一起显示(用不同的坐标),举个例子。
figure;
ax1=gca; %得到默认建立的第一个Axes
set(ax1,'position',[0.1 .1 .8 .8],'ycolor', 'b','nextplot','add','color','none');%调整大小
ax2 = axes('position', [0.1 0.1 .8 .8], 'ycolor', 'r', 'nextplot', 'add', 'YAxisLocation', 'right', 'color', 'none'); %再建立个图,坐标显示右边
plot(ax1,[0:.1:100],sin([0:.1:100]));
grid on;
grid minor;
plot(ax2,[0:.1:100],[0:.1:100].^2);
第三:axes与figure
一张白纸上可以画在几个区域内画图,而所谓区域,必须存在于白纸上才有意义。figure上可以有多个axes,axes必须在figure上,要画图必须有axes。
第四:关于句柄
axes和figure的对象属性能让用户方便的进行操作,例如在figure上选中一个axes:
set(figure_handle,'CurrentAxes',axes_handle)
第五:关于axes图像复制问题
前些天想从在gui中现这样一个功能:在gui中对其中的一个axes上的图像进行copy
fiure,结果无论是hgexport函数还是print,操作对象只能是fiure句柄,在网上找了找发现有几个朋友跟我有同样的想法,都是没看到解决办法,一想的确是2了,就好比在figure用了subplot命令,难道你还想一次copy
figure只复制一个子图么?办法不是没有,将子图复制为新的figure对象输出后删除,但是没太大意义。
实现方法:
newf = figure('visible','off');
%产生不可见的figure对象
axes2 = copyobj(handles.axes1,gcf);
%把GUI中的图复制到新figure中
set(axes2,'units','default','position','default');
对axes进行设置
hgexport(gcf,'-clipboard');
%输出到剪贴板
delete(newf); %删除不可见的figure
注意,创建为新的坐标轴对象后,必须对其位置,大小进行调整,否则会出现混乱,即上文的set语句,根据需要进行调整。
第一:什么是figure?
figure的翻译是图像,这个谁都知道,但是在matlab中的figure对象准确意义应该是:matlab软件用于直观性图形输出的窗口个体,这个概念很多人没有。
用Figure命令时,它默认会帮你建立个Axes,你可以用gca得到它。
PS.复制窗口命令 uimenufcn(gcf, 'EditCopyFigure')
第二:什么是axes?
一张白纸上可以画画,你可以在纸上的任何区域画,这个确定画图区域并确定作图的一些方式的东西的就是axes,也就是坐标对象。画图的作用就是,在当前的活动figure对象中的一个坐标对象上作图。
Axes一般常用在你想将多幅图放在一起显示(用不同的坐标),举个例子。
figure;
ax1=gca; %得到默认建立的第一个Axes
set(ax1,'position',[0.1 .1 .8 .8],'ycolor', 'b','nextplot','add','color','none');%调整大小
ax2 = axes('position', [0.1 0.1 .8 .8], 'ycolor', 'r', 'nextplot', 'add', 'YAxisLocation', 'right', 'color', 'none'); %再建立个图,坐标显示右边
plot(ax1,[0:.1:100],sin([0:.1:100]));
grid on;
grid minor;
plot(ax2,[0:.1:100],[0:.1:100].^2);
第三:axes与figure
一张白纸上可以画在几个区域内画图,而所谓区域,必须存在于白纸上才有意义。figure上可以有多个axes,axes必须在figure上,要画图必须有axes。
第四:关于句柄
axes和figure的对象属性能让用户方便的进行操作,例如在figure上选中一个axes:
set(figure_handle,'CurrentAxes',axes_handle)
第五:关于axes图像复制问题
前些天想从在gui中现这样一个功能:在gui中对其中的一个axes上的图像进行copy
fiure,结果无论是hgexport函数还是print,操作对象只能是fiure句柄,在网上找了找发现有几个朋友跟我有同样的想法,都是没看到解决办法,一想的确是2了,就好比在figure用了subplot命令,难道你还想一次copy
figure只复制一个子图么?办法不是没有,将子图复制为新的figure对象输出后删除,但是没太大意义。
实现方法:
newf = figure('visible','off');
%产生不可见的figure对象
axes2 = copyobj(handles.axes1,gcf);
%把GUI中的图复制到新figure中
set(axes2,'units','default','position','default');
对axes进行设置
hgexport(gcf,'-clipboard');
%输出到剪贴板
delete(newf); %删除不可见的figure
注意,创建为新的坐标轴对象后,必须对其位置,大小进行调整,否则会出现混乱,即上文的set语句,根据需要进行调整。
相关文章推荐
- Matlab界面中选项卡的切换
- matlab函数 bsxfun浅谈(转载)
- matlab中parfor函数
- 说说wavedec2函数
- matlab2013b调用cpp文件,mex,VS2013配置问题
- matlab2013b 安装教程
- "Gradient Domain Guided Image Filtering"论文中边缘权重函数matlab实现代码
- Matlab 原始txt分裂为新的txt文件
- matlab显示的图片,手动保存时四周有白边
- MatLab安装中出现的问题
- SIFT特征提取-应用篇
- Matlab除法结果取整
- Matlab直方图法去雾
- MATLAB调用c/c++ MATLAB c/c++混编
- matlab练习程序(碎片)
- Matlab lugui
- matlab中find函数的使用说明
- matlab中figure是什么意思
- matlab中的rand函数
- matlab中sort函数的用法