2012-07-19 169 views
3

我在绘制xaxis上的时间上有困难。我有一些重叠的标签。请看下图:MATLAB:在X轴上绘制时间 - 重叠标签

plot

这是我的代码:

time=datenum(0,0,0,0,0,timeinseconds); 
labs=1:10:length(time); 

figure(3); 
plotyy(time,xvalue,time,dens); 
datetick('x','HH:MM'); 
set(gca,'XTick',time(labs),'XTickLabel',time(labs)); 
legend('xval','CDF'); 
title('Crash on Oct.10 2008 at 15:59pm'); 
xlabel('Time'); 

首先,为什么标签与旧的重叠?其次,我如何让标签旋转90度?我尝试了一些其他的matlab函数来打开标签,但似乎没有人能够解决时间格式标签。

回答

3

调用plotyy您创建两个axis对象。您的重叠问题可能来自于您只修改其中一组轴的事实,而另一组则是最初设置的。通过改变'XTick'

[AX, H1, H2] = plotyy(time, xvalue, time, dens); 

你的第一选择这里设立两个轴,包含处理器AX的阵列内的,:

一种选择是同时处理创建轴时,您可以通过拨打plotyy礼为:

set(AX(1), 'XTick', time(labs), 'XTickLabel', time(labs)); 
set(AX(2), 'XTick', time(labs), 'XTickLabel', time(labs)); 

但你也有离开的第二轴标签空,更换上述第二行的选项:

set(AX(1), 'XTick', time(labs), 'XTickLabel', time(labs)); 
set(AX(2), 'XTick', time(labs), 'XTickLabel', []); 

plotyyUsing Multiple X- and Y-Axes的官方文档可以为您提供进一步的帮助。


如果你采取的例子来看看在那里,即plotyy文档:

figure 
x = 0:0.01:20; 
y1 = 200*exp(-0.05*x).*sin(x); 
y2 = 0.8*exp(-0.5*x).*sin(10*x); 
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot'); 

和之前一样,只尝试修改AX(2),这相当于你有写什么gca

set(AX(2),'XtickLabel',1:0.1:20) 

你会发现,同样的错误重复发生。

关于旋转标签90度,恐怕目前不支持Matlab。但是,您可以使用FileExchange上的其中一个可用软件包完成此操作。 xticklabelrotateRotate Tick Label可能是一个。

+0

感谢您的帮助!但是当我实现你的建议''我得到一个错误'“错误使用set.value必须是数字”' – Plug4 2012-07-19 23:15:12

+0

我相信'datetick('x','HH:MM');'可能是问题 – Plug4 2012-07-19 23:20:19

+1

我更新完成这个例子。你的错误可能在你的一个变量上:'xvalue','time','dens'或'labs'。但是,如果您怀疑'datetick'尝试使用它作为'datetick(AX(1),'x','HH:MM')'来修改第一轴'x'标签 – Drodbar 2012-07-19 23:31:39