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

在绘图时,如何实现XTickLabel的旋转?

[复制链接]
发表于 2009-11-10 14:18:04 | 显示全部楼层 |阅读模式 来自 浙江杭州
本帖最后由 messenger 于 2009-11-28 00:36 编辑

在绘图时,如果XTickLabel的字符串过长,会导致多个ticklabel重叠。一般情况下,label是可以通过属性设置其旋转的,但是,ticklabel在axis属性对话框中通过设置style只能设置FontSize和FontWeight等属性,并不能旋转。

解决方法是,通过set(h,'XTickLabel',[])命令将原来的ticklabel去掉,然后用text命令添加新的ticklabel并通过设置'Rotation'属性将其旋转。

例如:

  1. % 绘图,其中X轴代表月
  2. x = 1:12;
  3. y = 10*rand(1,length(x));
  4. h = plot(x,y,'+');

  5. % Remove the default labels
  6. set(gca,'XTickLabel','')

  7. % 设定X轴刻度的位置,以使其与标定的月份对应
  8. Xt = 1:2:11;
  9. Xl = [1 12];
  10. set(gca,'XTick',Xt,'XLim',Xl);

  11. % 加入文本标签
  12. months = ['Jan';'Feb';'Mar';'Apr';'May';'Jun';'Jul';'Aug';'Sep';'Oct';'Nov';'Dec'];

  13. ax = axis; % Current axis limits
  14. axis(axis); % Set the axis limit modes (e.g. XLimMode) to manual
  15. Yl = ax(3:4); % Y-axis limits

  16. t = text(Xt,Yl(1)*ones(1,length(Xt)),months(1:2:12);
  17. set(t,'HorizontalAlignment','right','VerticalAlignment','top', 'Rotation',45);

复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评分

1

查看全部评分

发表于 2009-11-10 16:31:19 | 显示全部楼层 来自 广西贵港
Simdroid开发平台
http://www.newsmth.net/bbsanc.ph ... h%2FM.1053264522.Q0
真正想学习MATLAB,尤其是基础的,建议去smth逛逛
http://www.newsmth.net/bbsdoc.php?board=MathTools
主要去其精华区看看,去下载一下MATHTOOLS版面的精华区CHM版本
毕竟SMTH MATHTOOL是较早地集合了大批优秀的MATLABer的基地。
当然,我比较喜欢2004年前MATHTOOLS版面
回复 不支持

使用道具 举报

 楼主| 发表于 2009-11-10 19:09:05 | 显示全部楼层 来自 浙江杭州
smth倒是经常逛,不过主要是去其他版,MATLAB版也常顺便去,那里好象讨论的问题范围比较窄,觉得可看的东西不多。那个版的精华有点太老了,你给的链接中的那个mathworks链接http://www.mathworks.com/support/solutions/data/5375.shtml都打不开了。

这个贴子的参考链接我在FAQ里给出的比较全。觉得原来mathworks的那个贴子写得比较繁,所以综合其他贴子,精简了一下,这样更能说明问题,避免被其他非主要内容干扰,更易让新手明白。

觉得要是真正想学习MATLAB,还是mathworks比较好,当然HELP里很多内容也是mathworks的。
回复 不支持

使用道具 举报

发表于 2009-11-10 20:59:33 | 显示全部楼层 来自 广西贵港
因为是BBS,而且驻扎在学校,铁打的营盘流水的兵,所以,很多是重复性的FAQ似的问题。所以,我喜欢2003年前的SMTH MATHTOOLS。
精华区虽老,但对于新手,对于FAQ似的问题,绝对不老。
至少这个目录
http://www.newsmth.net/bbs0an.ph ... Fsoftwares%2Fmatlab
和这个目录
http://www.newsmth.net/bbs0an.ph ... %2Fmatlab%2Fgraphop
对于SIMWE很多版友来说阅读一下是有意义的。
当然,这种关于学习方法的建议,对于很多新手来言,是没有意义的。这点从本版的混编贴就可以看出来。
回复 不支持

使用道具 举报

发表于 2009-11-27 14:51:56 | 显示全部楼层 来自 北京
1# messenger

发现程序有点小问题:
1,提取Y轴的的范围,直接用Yl=ylim就可以了
可省去下面两句
ax = axis; % Current axis limits
axis(axis); % Set the axis limit modes (e.g. XLimMode) to manual
2、months应该是个元胞数组,不应该是矩阵,否则xticklabel出来的效果是
JMMJSN
months = ['Jan';'Feb';'Mar';'Apr';'May';'Jun';'Jul';'Aug';'Sep';'Oct';'Nov';'Dec'];
months = {'Jan';'Feb';'Mar';'Apr';'May';'Jun';'Jul';'Aug';'Sep';'Oct';'Nov';'Dec'};
3、下句少了个符号,呵呵!
t = text(Xt,Yl(1)*ones(1,length(Xt)),months(1:2:12,);
应为:
t = text(Xt,Yl(1)*ones(1,length(Xt)),months(1:2:12));

评分

1

查看全部评分

回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-27 15:07 , Processed in 0.043443 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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