matlab中使用的双轴

时间:2012-08-23 15:11:32

标签: 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')

在网上搜索后,我发现关掉包装盒也可以解决问题。但问题是关闭盒子会使顶部水平线也消失。无论如何要删除额外的比例并保持框架?感谢。

2 个答案:

答案 0 :(得分:2)

这是可能的,而且非常困难,这是一个基于测试代码的示例性示例图a figure based on your example

我所做的是添加一个第三轴(在这种情况下,我通过快捷方式实现了这一点 - 我将plotyy称为两次,在第一个轴上产生了额外的蓝线,另外还有一个额外的蓝线第二轴带绿线)。

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

答案 1 :(得分:0)

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

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

如果你想要,你可以用以下方式重新画线:

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

或更一般地说:

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