找回密码
 注册
Simdroid-非首页
查看: 219|回复: 0

Mathworks FAQ(2009),Graphics部份

[复制链接]
发表于 2009-11-27 01:01:05 | 显示全部楼层 |阅读模式 来自 浙江杭州
本帖最后由 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个按钮),并且增加/减少每一个控制的竖向/水平位置。例如:

  1. % fig_handle is the handle of the figure containing the UI controls
  2. % pushb1_handle, pushb2_handle  are the handles of the pushbuttons
  3. % described above

  4. % find handles of all the controls
  5. all_handles=findobj(fig_handle);

  6. % exclude the handles of the 2 pushbuttons and the figure itself
  7. move_handles=setdiff(all_handles, ...
  8.           [fig_handle, pushb1_handle, pushb2_handle]);

  9. % loop over the remaining handles and change their positions
  10. for k=1:length(move_handles)
  11.     set(move_handles(k),'position', ...
  12.          (get(move_handles(k),'position'))-[0 0  0 10]);
  13. end

复制代码
5.5:如何旋转坐标轴刻度值标签(ticklabel)?
答:不能直接旋转坐标轴刻度值标签(ticklabel),但是在File Exchange里有一些用户解决方案,比如Format Tick Labels

5.6:如何像Excel中那样,在网格中显示数据?
答:如果你只是简单地想如同在Excel中的表单中那样编辑矩阵,你可以使用内联函数Array Editor。在命令提示符中输入openvar(my_var),或者双击工作空间浏览窗口中的变量。

5.7:如何输入多行标题或文本?
答:可以用字符元胞数组来实现这一功能:

  1. title({'First line','Second Line'})
  2. 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文件中:

  1. set(0,'DefaultObjectnamePropertyName',Value)
复制代码
有关线的对象特性值,举例如下:

  1. set(0,'DefaultLineMarkerSize',12);
  2. set(0,'DefaultLineMarker','d');
  3. set(0,'DefaultLineLineWidth', 2);
复制代码
相似地,你可以用下面的语句来改变轴对象特性:

  1. set(0,'DefaultAxesLineWidth', 2);
  2. set(0,'DefaultAxesXGrid','on');
  3. set(0,'DefaultAxesTickDir','out');
  4. set(0,'DefaultAxesTickLength',[0.015 0.015]);
  5. set(0,'DefaultAxesFontName','Arial')
复制代码
更多的详节,R12的在线帮助中搜索'Defining Default Values'的内容。也可以参考下面的内容:
    *  Graphics Object Hierarchy
    *  Types of Graphics Objects

5.10:如何修改直方图的背景颜色?
答:直方图是patch对象。修改方法是通过修改patch对象的FaceColor特性。下面是一个小例子:

  1. x=rand(400,1);
  2. hist(x);                           % 默认的直方图颜色是兰色
  3. h=get(gca,'Children');
  4. set(h,'FaceColor', 'm');           % 修改为紫红色

  5. % 只绘制直方图的边缘线,而不画里面的颜色
  6. set(h,'FaceColor', 'none');
复制代码
5.11:如何用plotyy命令画二条以上的线?
答:可以用axes句柄来画附加的线,如:

  1. x1 = (1:10)';  x2 = x1;  y1 = x1; y2 = x1.^2;
  2. %对应左、右y轴,各画一条线
  3. [ax, h1, h2] = plotyy(x1,y1,x2,y2);

  4. %对应左y轴再画一条线
  5. x3= x1;  y3 = y1 + 3;
  6. h3 = line(x3,y3,'Parent', ax(1), 'Color',get(h1,'Color'));

  7. %对应右y轴再画一条线
  8. x4= x1;  y4 = y2+3;
  9. h4 = line(x4,y4,'Parent', ax(2), 'Color',get(h2,'Color'));
  10. 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的坐标,则你可以用以下命令:

  1. plot(D(:,1),D(:,2),'+-');
  2. n=num2str(D,'%5.3f/');
  3. n=n(:,1:end-1);          % 去掉末尾处的斜杠
  4. text(D(:,1),D(:,2),n);
复制代码

http://matlabwiki.mathworks.com/MATLAB_FAQ#Graphics
游客,本帖隐藏的内容需要积分高于 6 才可浏览,您当前积分为 0

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-7 05:27 , Processed in 0.034599 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表