我在绘制x轴上的时间方面遇到了困难。我有一些重叠的标签。见下文:
这是我的代码:
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函数来转换标签,但似乎没有人能够处理时间格式标签。
答案 0 :(得分:3)
调用plotyy
您创建两个axis
个对象。您的重叠问题可能来自这样一个事实,即您只修改了一组这些轴,而另一组则保留了最初设置的那个轴。
当您通过以下方式致电plotyy
时,一个选项是处理两个创建的轴。
[AX, H1, H2] = plotyy( time, xvalue, time, dens);
此处的第一个选项是通过更改AX
适当性来设置包含在处理程序数组'XTick'
中的两个轴:
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', []);
plotyy和Using 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上的一个可用包完成该操作。 xticklabelrotate或Rotate Tick Label可以是那个。