在情节中,左y轴刻度在右y轴上重叠。我该如何删除这种重叠?我不希望在右y轴上看到左y轴刻度

时间:2012-02-24 07:55:59

标签: matlab plot

当我使用plotyy制作带有两个y轴的图形时。存在一个问题,即主y轴上的刻度也显示在次y轴上。 这是代码

clear all;
clc;
load ('bval_time.txt');
load ('loadtime.txt');
load ('timeload.txt'); 
load1 =loadtime(:,1);
time1 =timeload(:,1); 
time = bval_time(:,1);
B_value = bval_time(:,2);
[AX,H1,H2]=plotyy(time1,load1,time,B_value,'plot');
title('Load-bvalue-Time variation graph-150grp');
legend('Load','B_value',1);
xlabel('Time(sec)')
set(get(AX(1),'Ylabel'),'String','Load(KN)') 
set(get(AX(2),'Ylabel'),'String','b-value')
set(H1,'LineStyle','-')
set(H2,'LineStyle','-','marker','*')
set(AX(1), 'ylim', [0 15])
set(AX(2), 'ylim', [0 2])
set(AX(1),'YTick',[0:1:15])
set(AX(2),'YTick',[0:0.2:2])

2 个答案:

答案 0 :(得分:2)

最简单的方法是将左(第一)轴的box属性设置为off

set(AX(1),'box','off')

或者,您可以在Y轴上设置相同数量的刻度。你可以用两种方式做到这一点:

1)改变刻度之间的距离

set(AX(1),'YTick',[0:15])
set(AX(2),'YTick',linspace(0,2,16))

2)更改轴限制

set(AX(1), 'ylim', [0 15])
set(ax(2), 'ylim', [0 3])
set(ax(1),'YTick',0:15)
set(ax(2),'YTick',0:0.2:3)

答案 1 :(得分:1)

我遇到了同样的问题。我重新定义了正确的y轴刻度,但我想在方块周围保留方框。

解决方案是在axes创建的plotyy之上添加新的axes,并将此x = 1:10; y = x.^2; AX = plotyy(x,y,x,y*3) set(AX(2),'YTick',0:90:400) 的框设置为“on”。但是,您必须确保此框具有正确的x刻度,并且不会遮盖左右y轴的颜色。

以下是显示问题的示例图:

set(AX(1),'box','off')
set(AX(2),'box','off')
% create a new axes on top of old ones
new_AX = axes('Position',get(AX(1),'Position'),'XLim',get(AX(1),'XLim'),'YTick',[]);
set(new_AX,'box', 'on')
% reorder things to make y-axes and box visible at the same time
uistack(AX(1),'top')
uistack(AX(2),'top')
set(AX(1),'Color','None')

注意右边的额外刻度。解决方案:

axes

注意:创建此额外{{1}}后,缩放和平移将无法正常工作。另外,我使用Matlab2011a测试了这段代码,但它可能无法与其他Matlab版本一起使用。