建议你用面向对象的方式去画图,一个图作为一个对象,这样每次调用一个对象的保存图片方法就可以只保存当前图片。
你这种用法第三张图会有三个子图是因为三个子图都画在同一个对象上。
为了将面向对象的绘图库包装成只使用函数的调用接口,pyplot模块的内部保存了当前图表以及当前子图等信息。当前的图表和子图可以使用gcf()和gca()获得,它们分别是“GetCurrentFigure”和“GetCurrentAxis”的开头字母缩写。gcf()获得的是表示图表的Figure对象,而gca()则获得的是表示子图的Axes对象。下面我们在IPython中运行上节的“matplotlib_simple_plot.py”程序,然后调用gcf()和gca()查看当前的Figure和Axes对象。
给你个例子
importnumpyasnp
importmatplotlib.pyplotasplt
plt.figure(1)#创建图表1
plt.figure(2)#创建图表2
ax1=plt.subplot(211)#在图表2中创建子图1
ax2=plt.subplot(212)#在图表2中创建子图2
x=np.linspace(0,3,100)
foriinxrange(5):
plt.figure(1)❶#选择图表1
plt.plot(x,np.exp(i*x/3))
plt.sca(ax1)❷#选择图表2的子图1
plt.plot(x,np.sin(i*x))
plt.sca(ax2)#选择图表2的子图2
plt.plot(x,np.cos(i*x))
plt.show()
⑵ 布尔加运算的gui指令是什么意思
matlab——GUI概念
什么是GUI:⼈和计算机进⾏信息交流的⼯具,由各种对象组成
对象
对象(⼀个具体的物),在⼀幅图中窗⼝,坐标轴,曲线,⽂本都是对象。
窗⼝是显⽰器的⼦对象,坐标轴是窗⼝的⼦对象,曲线是坐标轴的⼦对象……
对象与句柄⼀⼀对应
句柄
什么是句柄
1. 句柄是⼀个标识符,是拿来标识对象(显⽰器句柄为0……)的,它就象我们的姓名(编号)⼀样。
2. 它类似于⼀个指针,但指针的值是内存地址,⽽句柄是⼀个数。
为什么需要句柄?
1. 对对象进⾏操作,就需要先知道对象的句柄值,电脑并不能直接理解什么是显⽰器,坐标轴,只有给对象编号后(句柄),下达带句
柄的指令电脑才能理解。
如何得到对象的句柄
1. allchild()函数 (doc allchild指令可以查找到allchild的帮助⽂献)
查找指定对象(句柄值所代表的对象)的所有⼦对象
例⼦:allchild(gcf)可以获得当前窗⼝的所有⼦对象(没错gcf就是当前窗⼝的意思),获得了⼀⼤堆句柄值,但不知道每个句柄值具体代表哪个对象(电脑找出来所有⼦对象,但⽤句柄值表达出来,电脑也只会⽤句柄值表达)
findobj()函数可以按照要求查找带限定条件的对象的句柄值
例⼦:find(allchild(gca),'Type','Text')
在allchild()返回的所有句柄值代表的对象中寻找Type属性为Text的对象,并返回它的句柄值。(通过这个例⼦还可以看出,和C语
⾔,python⼀样,电脑识别字符串都要依靠单引号)
2. 可以⽤get(ans(1))返回这个句柄值代表的对象的各种属性(ans(1)是gcf第⼀个⼦对象的句柄值),然后⾥⾯⼀般会有⼀个type属性,可以看出这个对象的现实含义。
3. 可以通过set对对象进⾏操作
例⼦: set(ans(1),'position',[0.13 0.13 0.5 0.5])对ans(1)句柄所表⽰的对象的属性进⾏操作。(四个数字分别是position的横坐标,纵坐标,宽度,⾼度)
可以通过set()同时对多个属性进⾏操作,set(句柄值,‘属性1’,‘这项属性改变后的值’,‘属性2’,‘这项属性改变后的值’……)
综上可以看出来,电脑⽤句柄表⽰各种事物,⼈⽤对象表⽰各种事物,⼈对计算机下达指令的时候需要表明是对哪个句柄,电脑才能执⾏。
总结:
¥
5.9
网络文库VIP限时优惠现在开通,立享6亿+VIP内容
立即获取
matlab——GUI概念
matlab——GUI概念
什么是GUI:⼈和计算机进⾏信息交流的⼯具,由各种对象组成
对象
对象(⼀个具体的物),在⼀幅图中窗⼝,坐标轴,曲线,⽂本都是对象。
窗⼝是显⽰器的⼦对象,坐标轴是窗⼝的⼦对象,曲线是坐标轴的⼦对象……
对象与句柄⼀⼀对应
⑶ matlab中 figure有哪些属性
使用 get(gcf) 或 set(gcf) 命令可以看到 figure 有哪些属性。
其中 get 可以获得所有的属性,包括只读的(如Type);set只能获得用户可以设置的属性,对一些属性值为枚举型的属性,还会同时会列出可以设置的值。
使用 doc figure_props 可以查看文档中关于 figure 属性的具体描述,内容很多,要想完整地看明白,需要花不少时间。还有其它图形对象(如axes、uicontrol等)的属性,要是把这些属性都基本搞明白了,MATLAB的Handle Graphics图形系统你基本上也就可以随意控制了。
⑷ set(gcf,'Position',[10,60,900,700], 'color','w') 代表什么意思啊 尤其那个W是什么意思
这里设置了figure的位置:起始坐标为10,60,这是显示器的像素值。图宽度为900个像素,高度为700像素。'color','w' 设置了图片背景为白色,w表示白色。
如果不设置默认也是白的。gcf是当前图窗的句柄,用图窗句柄可查询和修改图窗属性,具体方法可以看帮助文档。set应该是改变句柄属性时用的,例如在编写GUI界面时。理解是句柄好比C++中的类,上面那条代码就是将gca句柄中的color属性改为w。
如果使用
任何逻辑或取余操作符, 您需要将表达式字符串用引号扩起来。在表达式中的任何非数字字符串键作为环境变量名称,这些环境变量名称的值已在使用前转换成数字。如果指定了一个环境变量名称,但未在当前环境中定义,那么值将被定为零。
这使您可以使用环境变量值做计算而不用键入那些 % 符号来得到它们的值。如果 SET /A 在命令脚本外的命令行执行的,那么它显示该表达式的最后值。该分配的操作符在分配的操作符左边需要一个环境变量名称。
⑸ matlab中set(gcf,'XAxisLocation','top'); 这个命令有什么错误吗请解答!!!谢谢!!!
改成set(gca,'XAxisLocation','top')
XAxisLocation是axis的属性,不是figure的属性
⑹ Matlab中getframe函数的用法
F = getframe(h,rect) specifies
a rectangular area from which to the pixmap. rect is
relative to the lower left corner of the figure or axes h,
in pixel units. rect is a four-element vector in the form [left
bottom width height], where width and height define
the dimensions of the rectangle.
本函数是要从图形对象中截取一块出来。其中h是图像句柄,rect是一个四元素向量,代表[a b c d],其中a表示截取区域到图像左端的像素数,b表示截取区域到图像底端的像素数,c表示截取区域水平像素数,d表示截取区域垂直向像素数。
得到的F是一个结构体(struct),包含两个元素:cdata和colormap,其中cdata是截取区域的数据,是一个三维数组,其中第三维的长度是3,即截取到的是区域中RGB的值。colormap是调色板,这个没啥意思。
例如:
x=0:pi/100:2*pi;
y=sin(x);
plot(x,y)
set(gcf,'color',[1 1 1]) %设置背景色为白色
title('测试图像保存')
F=getframe(gcf); % 获取整个窗口内容的图像
F1=getframe; % 获取坐标轴为界的图像
imwrite(F.cdata,'test1.png')
imwrite(F1.cdata,'test2.png')
getframe获得的是一个架构struct类型的数据,
其中cdata子域的内容才可以用imwrite内容保存,用F.cdata表示
getframe(gcf) 即get current figure,获得窗口内图像,包含legend、title以及label。如果不添加gcf,默认为gca(get current axis)。
imwrite 可以保存jpg、png等格式图像,gif是7.0添加的,但是好像没办法保存为动画,只能保存第一帧。
与在图像界面直接利用复制,或用file>save as...保存不同的是,imwrite的背景色为窗口实际颜色,默认为灰色(RGB表示为[.7 .7 .7]),若想保留白色背景图,需添加例子中的set gcf color命令。
⑺ 怎样用matlab进行列向量归一化
一、解决方法:
按列除以归一化因子,bsxfun(@rdivide,rand(3),1:3) 可以快速实现。
二、matlab的小技巧:
1、Ctrl+C 中断正在执行的操作
如果程序不小心进入死循环,或者计算时间太长,可以在命令窗口中使用Ctrl+c来中断。MATLAB这时可能正疲于应付,响应会有些滞后。
2. figure命令新建一个绘图窗口
figure 可以打开一个空的绘图窗口,接下的绘图命令可以将图画在它里面,而不会覆盖以前的绘图窗口。当有多个figure窗口时,在命令窗口中执行如Plot等命令将覆盖当前figure窗口中的对象。所谓的当前figure窗口,也就是最后一次查看的窗口(可以用命令gcf得到)。
figure(N),将编号为N的窗口置为当前figure,出现在所有窗口的最前面,如果该窗口不存在,则新建一个编号为N的空白figure。
3. 注释掉一段程序:%{、%}。
经典方法是用 if 0,但缺点是不够直观,注释掉的内容仍然保持代码的颜色。现在可以用 %和{ 的组合。输入%{后,后面的代码都会变绿,在注释结束的地方再加上 %} 。
也可以选中要注释内容,在右键菜单中选择Comment (Uncomment去掉注释标记),或使用快捷键Ctrl+R。
将光标放在需要注释的行中,按Ctrl+R,将该行变为注释。取消注释也是一样的,快捷键为Ctrl+T。
4. doc 命令名,打开命令的帮助文档
与help命令不同,帮助文档MATLAB Help中对命令的描述更详细,往往还有一些例子,更便于理解。
5. clc 清屏
清除命令窗口中的所有输入和输出信息,不影响命令的历史记录。
6. clear 和clear all
clear 变量名:可以清除workspace中的无用的变量,尤其是一些特别大的矩阵,不用时及时清理,可以减少内存占用。
clear all 清除所有的变量,使workspace一无所有,当重新开始一次算法验证时,最好执行一次,让workspace中的变量一目了然。
7. close all
如果开了多个绘图窗口,用这个命令将它们一起关掉。
8. 上下光标键↑↓
在命令窗口中,上下光标键可以将历史记录中的命令复制到输入位置,便于快速重新执行。如果输入命令的前几个字母如 [row, col] =,再使用光标键,则只会选择以这些字母开始的命令。
9. Tab补全
对名称记得不太清楚的命令,可以输入开头的几个字母,然后按Tab键,当只有一个以这些字母开头的命令时,将自动补全命令名,否则显示一个命令名列表,方便从中选择。当然,只在命令窗口中有效。
10. cell模式
在一个长长的脚本m文件中,可能需要对其中的一段反复修改,查看执行效果,这时,cell模式就非常有用了。cell模式相当于将其中的代码拷贝到命令窗口中运行。两个%后接一个空格(%% )开始一个cell。将输入光标放到一个cell中时,背景将变为浅黄色,Ctrl+Enter执行cell中的代码。
执行cell中代码时不需要保存m文件,该m文件可以不在路径列表中。
cell模式中,断点不起作用,当然,调用的子程序中的断点还是正常的。
⑻ MATLAB中*.fig图像怎么提取数据
1、在命令行运行figure打开一个空白窗口。
2、在工具栏或者菜单中选择open打开你保存的fig文件,会显示出原来的那个图来。
3、在命令行运行obj = get(gca,'children')。这个结果对应你的图里面的线或者面的句柄,有几条线就对应几个句柄。
4、根据你需要的是哪条线,第n条线句柄就是obj(n),如果只有一个对象直接用obj就可以,
然后再用一次get。
x=get(obj(1), 'xdata')。
y=get(obj(1), 'ydata')。
如果是三维图,再加上个z=get(obj(1),'zdata')。
x、y、z就是你所需要的坐标数据