0

我在 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')

在网上搜索后,我发现关闭盒子也可以解决问题。但问题是关闭盒子会导致顶部水平线也消失。无论如何都要去除多余的刻度并保留框架吗?谢谢。

4

2 回答 2

2

这是可能的并且不是非常困难,这是一个基于您的测试代码的说明性示例图基于您的示例的数字

我所做的是添加第三个轴(在这种情况下,我通过走捷径来实现这一点 - 我两次调用 plotyy 导致第一个轴上有一条额外的蓝线,而第二个轴上有一条绿线)。

这个想法是关闭第一个和第二个轴的边界框,然后为第三个轴打开它。这导致顶部轴为您提供左侧垂直轴,第二个为右侧垂直轴,第三个为顶部水平轴。

于 2012-08-23T16:02:30.177 回答
0

我认为没有简单的方法可以做你想做的事。如果关闭该框(以消除右侧的蓝色刻度线),则顶部水平线将消失:

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

如果你愿意,你可以用以下方法重新画线:

line([-1, 1], [1, 1])

或更一般地说:

lims = get(AX(1),{'XLim','YLim'});
line(lims{1}, lims{2}([2 2]))
于 2012-08-23T15:44:16.713 回答