双轴在matlab中的应用

双轴在matlab中的应用,matlab,axes,Matlab,Axes,我正在使用matlab中的plotyy在同一个图形中绘制两个数据集。左轴和右轴的范围不同。但我发现在右边的轴上,似乎有两组不同的刻度。我想其中一个是从左轴来的 t=-1:0.02:1; y=sin(t); y1=2*sech(t); [AX, H] =plotyy(t, y, t, y1); ylim(AX(2), [0 3.25]); set(AX(2), 'YTickMode', 'auto') 在网上搜索之后,我发现关掉盒子也能解决问题。但问题是,如果关闭该框,顶部水平线也会消

我正在使用matlab中的plotyy在同一个图形中绘制两个数据集。左轴和右轴的范围不同。但我发现在右边的轴上,似乎有两组不同的刻度。我想其中一个是从左轴来的

t=-1:0.02:1; 
y=sin(t); 
y1=2*sech(t); 
[AX, H] =plotyy(t, y, t, y1); 
ylim(AX(2), [0 3.25]); 
set(AX(2), 'YTickMode', 'auto')

在网上搜索之后,我发现关掉盒子也能解决问题。但问题是,如果关闭该框,顶部水平线也会消失。这样做是为了去掉多余的刻度并保留框架吗?谢谢。

我认为没有简单的方法来做你想做的事。如果关闭长方体(以消除右侧的蓝色记号),则顶部水平线将消失:

set(AX(1), 'Box','off')
如果需要,您可以使用以下命令重新绘制该线:

line([-1, 1], [1, 1])
或者更一般地说:

lims = get(AX(1),{'XLim','YLim'});
line(lims{1}, lims{2}([2 2]))

这是可能的,也不是非常困难,下面是一个基于测试代码的示例图

我所做的是添加一个第三轴(在本例中,我通过一个快捷方式实现了这一点-我两次调用了plotyy,结果在第一个轴上有一条额外的蓝线,在第二个轴上有一条绿线)

其思想是为第一轴和第二轴禁用边界框,然后为第三轴启用边界框。这将导致顶部轴为左垂直轴,第二个轴为右垂直轴,第三个轴为顶部水平轴