调用plotyy
时,您将创建两个axis
对象。您的重叠问题可能来自于您仅修改其中一个轴集,而将另一个轴保留为最初设置。
一种选择是在调用plotyy
时处理所创建的两个轴:
[AX, H1, H2] = plotyy( time, xvalue, time, dens);
您的第一选择是通过更改 'XTick' 属性来设置包含在处理程序数组 AX 中的两个轴,如下所示:
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和 使用多个X轴和Y轴可能对您有所帮助。
如果您看一下那个例子,即
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 可能是其中之一。
datetick('x','HH:MM');
可能是问题所在。 - Plug4xvalue
、time
、dens
或labs
上。但如果你怀疑是datetick
函数导致的问题,可以尝试将其作为datetick(AX(1),'x','HH:MM')
使用来修改第一个轴x
坐标的标签。 - Drodbar[AX,H1,H2] = plotyy(time,xvalue,time,dens); set(AX(1),'XTick',time(labs),'XTickLabel',time(labs)); set(AX(2),'XTick',time(labs),'XTickLabel',time(labs)); datetick(AX(1),'x','HH:MM'); datetick(AX(2),'x','HH:MM');
- Plug4XTickLabel
中填充相同数据并将其叠加在另一个上面。很高兴它有帮助。 - Drodbar