当我使用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])
答案 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版本一起使用。