matlab+axis+旋转,[转载]在Matlab中,如何实现xticklabel的旋转 (转)

转自:http://hi.baidu.com/xuelicheng/blog/item/c0e147545eb565173a2935b7.html

在撰写科技论文时,不可避免的要使用图片显示试验结果。excel固然可以用来画图,但是excel画出来的图片不够精美,漂亮。Matlab是一个很强

大的工具(我对其他功能知之甚少),可以画出很精美的图片,并且可以直接存储为.eps格式,方便在LaTex中调用。

我在使用Matlab是遇到了一个问题,就是由于xticklabel的字符串过长,导致多个ticklabel重叠。

首先,为初学者解释一下什么是ticklabel?什么是label?

一般情况下,label是可以通过属性设置其旋转的,但是,这并不是我们要旋转的东西,我们想旋转的是ticklabel,而ticklabel在axis属性对话框中通过设置style只能设置FontSize和FontWeight等属性,并不能旋转。

我通过一个函数实现ticklabel的旋转

function

th=rotateticklabel(h,rot,demo)

%ROTATETICKLABEL rotates tick labels

% TH=ROTATETICKLABEL(H,ROT) ris

the calling form where H is a handle to

% the axis that contains the

XTickLabels that are to be rotated. ROT is

% an optional parameter that

specifies the angle of rotation. The default

% angle is 90. TH is a handle

to the text objects created. For long

% strings such as those

produced by datetick, you may have to adjust the

% position of the axes so the

labels don't get cut off.

%

% Of course, GCA can be

substituted for H if desired.

%

% TH=ROTATETICKLABEL([],[],'demo') shows a demo figure.

%

% Known deficiencies: if tick

labels are raised to a power, the power

% will be lost after

rotation.

%

% See also datetick.

% Written Oct 14, 2005 by Andy Bliss

% Copyright 2005 by Andy

Bliss

�MO:

if nargin==3

x=[now-.7

now-.3 now];

y=[20 35

15];

figure

plot(x,y,'.-')

datetick('x',0,'keepticks')

h=gca;

set(h,'position',[0.13 0.35 0.775 0.55])

rot=90;

end

%set the default rotation if user doesn't

specify

if nargin==1

rot=90;

end

%make sure the rotation is in the range 0:360 (brute force

method)

% while rot>360

% rot=rot-360;

% end

% while rot<0

% rot=rot+360;

% end

%get current tick labels

a=get(h,'XTickLabel');

%erase current tick labels from figure

set(h,'XTickLabel',[]);

%get tick label positions

b=get(h,'XTick');

c=get(h,'YTick');

%make new tick labels

if rot<180

th=text(b,repmat(c(1)-.1*(c(2)-c(1)),length(b),1),a,'HorizontalAlignment','right','fontsize',14,'fontweight','bold','rotation',rot);

else

th=text(b,repmat(c(1)-.1*(c(2)-c(1)),length(b),1),a,'HorizontalAlignment','left','fontsize',14,'fontweight','bold','rotation',rot);

end

如何使用这个函数呢?

x = round(rand(5,3)*10);

h=bar(x,1,'group');

set(gca,'xticklabels',{'benchmark1','benchmark2','benchmark3','benchmark4','benchmark5'});

h = gca;

th=rotateticklabel(h, 45);

效果图略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值