- 积分
- 14
- 注册时间
- 2003-3-3
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 messenger 于 2009-11-29 00:33 编辑
5.1:如何调整坐标轴的刻度值标签(ticklabel)的字体?
答:坐标轴的刻度值标签(ticklabel)的属性由它所标示的坐标轴(axis)的属性所决定。因此,用set(gca, 'fontsize', 14)可以达到调整坐标轴的刻度值标签(ticklabel)字体的目的。用get(gca)命令可以知道其他可以设置的属性。
5.2:我可以在坐标轴的刻度值标签(ticklabel)中用pi/sigma/上标吗?
答:不能直接在标轴的刻度值标签(ticklabel)直接用这些符号。MATLAB不能在标轴的刻度值标签(ticklabel)中解释TeX语法。你可以能过手动标记这些符号。可以参考MathWork中有关这一问题的解决方法。
也可以用第三方软件来解决这个问题。
Doug Schwarz写的一个Styled Text Toolbox可以完成这个任务。这一工具箱是免费的:http://www.frontiernet.net/~dmschwarz/stextfun/index.html。
5.3:可以用uigetfile来打开多个文件吗?
答:在MATLAB 7.0 (R14)中,你可以通过在UIGETFILE命令中加上'MultiSelect'来打开所选择的多个文件。如果你所用的是7.0以前的版本,你可以用MATLAB Central File Exchange中的'uigetfiles.dll' 来在Windows平台中解决这一问题。
这一文件的链接http://www.mathworks.com/matlabc ... p?type=category&;id=&fileId=331。
5.4:我想用滚动条来滚动我的编辑框/按钮
答:这个问题很难解决。MATLAB不支持图层,因此你不能用容器来掌握你的控件。如果你确实需要这么做,那你只好自己来实现这一功能,方法是用从滚动条的回调函数中不断修改你的控件的位置属性。
Ghassan Hamarneh的方法是:
在图中加2个按钮:一个在右上方,另一个在右下方,然后用这两个按钮来控制图在竖向滚动时变化显示的内容。(当然,你也可以在水平方向上加2个按钮,左下方一个,右下方一个)
无论这些按钮中的任何一个被点击,你只要对所有的控制做循环(除了那2个按钮),并且增加/减少每一个控制的竖向/水平位置。例如:
- % fig_handle is the handle of the figure containing the UI controls
- % pushb1_handle, pushb2_handle are the handles of the pushbuttons
- % described above
- % find handles of all the controls
- all_handles=findobj(fig_handle);
- % exclude the handles of the 2 pushbuttons and the figure itself
- move_handles=setdiff(all_handles, ...
- [fig_handle, pushb1_handle, pushb2_handle]);
- % loop over the remaining handles and change their positions
- for k=1:length(move_handles)
- set(move_handles(k),'position', ...
- (get(move_handles(k),'position'))-[0 0 0 10]);
- end
复制代码 5.5:如何旋转坐标轴刻度值标签(ticklabel)?
答:不能直接旋转坐标轴刻度值标签(ticklabel),但是在File Exchange里有一些用户解决方案,比如Format Tick Labels。
5.6:如何像Excel中那样,在网格中显示数据?
答:如果你只是简单地想如同在Excel中的表单中那样编辑矩阵,你可以使用内联函数Array Editor。在命令提示符中输入openvar(my_var),或者双击工作空间浏览窗口中的变量。
5.7:如何输入多行标题或文本?
答:可以用字符元胞数组来实现这一功能:
- title({'First line','Second Line'})
- text(0.5,0.5,{'First line','Second Line'})
复制代码 5.8:如何在几张图中用相同的色标(color scale)?
答:一种方法是在你的绘图命令中插入CAXIS命令。运行这个命令之前,你首先要看一下你的数据,确定整个数据的范围以及最大、最小值。例如,如果所有图像中的最小值为40,最大值为256,那么你可以用"caxis([40 256])"命令来控制每一张图的颜色。
Tech note 1215(http://www.mathworks.com/support/tech-notes/1200/1215.shtml)中阐述了相关问题,即“如何在一张图中用多个颜色分配表。为了阐述清楚,这篇文章对颜色分配表做了全面地阐述。
5.9:如何设置图像特性句柄默认值?
答:图像特性句柄默认值可能有几百项。与其记住某一默认项,还不如学会这些图像特性句柄默认值的共有规律。最基础的调用句柄是在startup.m文件中:
- set(0,'DefaultObjectnamePropertyName',Value)
复制代码 有关线的对象特性值,举例如下:
- set(0,'DefaultLineMarkerSize',12);
- set(0,'DefaultLineMarker','d');
- set(0,'DefaultLineLineWidth', 2);
复制代码 相似地,你可以用下面的语句来改变轴对象特性:
- set(0,'DefaultAxesLineWidth', 2);
- set(0,'DefaultAxesXGrid','on');
- set(0,'DefaultAxesTickDir','out');
- set(0,'DefaultAxesTickLength',[0.015 0.015]);
- set(0,'DefaultAxesFontName','Arial')
复制代码 更多的详节,R12的在线帮助中搜索'Defining Default Values'的内容。也可以参考下面的内容:
* Graphics Object Hierarchy
* Types of Graphics Objects
5.10:如何修改直方图的背景颜色?
答:直方图是patch对象。修改方法是通过修改patch对象的FaceColor特性。下面是一个小例子:
- x=rand(400,1);
- hist(x); % 默认的直方图颜色是兰色
- h=get(gca,'Children');
- set(h,'FaceColor', 'm'); % 修改为紫红色
- % 只绘制直方图的边缘线,而不画里面的颜色
- set(h,'FaceColor', 'none');
复制代码 5.11:如何用plotyy命令画二条以上的线?
答:可以用axes句柄来画附加的线,如:
- x1 = (1:10)'; x2 = x1; y1 = x1; y2 = x1.^2;
- %对应左、右y轴,各画一条线
- [ax, h1, h2] = plotyy(x1,y1,x2,y2);
- %对应左y轴再画一条线
- x3= x1; y3 = y1 + 3;
- h3 = line(x3,y3,'Parent', ax(1), 'Color',get(h1,'Color'));
- %对应右y轴再画一条线
- x4= x1; y4 = y2+3;
- h4 = line(x4,y4,'Parent', ax(2), 'Color',get(h2,'Color'));
- set(ax,'YLimMode','auto','YTickMode','auto')
复制代码 5.12:有画箭头的命令吗?
答:有一个用户发布的m文件(arrow.m) 可以实现这一功能,http://www.mathworks.com/matlabcentral/fileexchange/278。
也可以用arrow3.m文件,http://www.mathworks.com/matlabc ... 56-arrow3-version-5。
5.13:为什么用movie(M,1)命令会将电影M文件播放2次?
答:引述MATLAB 6.1 在线帮助:当实现电影播放功能时,Matlab将调入内存的每帧数据进行播放,然后再开始播放电影。这一现象是防止在调入比较耗内存的电影而产生的长时间黑屏。这种电影的加载循环并不被认为是电影播放的重复。
5.14:如何在GUI中设置焦点?
答:这一功能无法做到。有些用户希望MathWorks将来可以包含经常查询功能,但MathWorks并没有对其做出保证。
相关地,改变GUI元素的排放顺序可能充许你设置tab的顺序,但这并不总是有效。Matlab 6.5及以上版本中GUIDE包含了Tab顺序编辑器,可以更好的实现这方面的功能。
5.15:如何在数据点上加上文本标签?
答:文本命令可以以向量化的形式在需要的地方自动加入文本标签。比如,你有一个矩阵D,第1列是X的坐标,第2列是Y的坐标,则你可以用以下命令:
- plot(D(:,1),D(:,2),'+-');
- n=num2str(D,'%5.3f/');
- n=n(:,1:end-1); % 去掉末尾处的斜杠
- text(D(:,1),D(:,2),n);
复制代码
http://matlabwiki.mathworks.com/MATLAB_FAQ#Graphics
游客,本帖隐藏的内容需要积分高于 6 才可浏览,您当前积分为 0 |
评分
-
1
查看全部评分
-
|