我试图通过使用 breakyaxis 多次打破yaxis。从链接的评论中可以看出,其他人似乎也有多次破坏 y 轴的问题。例如:
x = linspace(0,10,11);
y1 = 0.01*x;
y2 = -0.01*x + 5;
y3 = 0.05*x + 10;
plot(x,y1)
hold on
plot(x,y2)
plot(x,y3)
hold off
请注意,由于斜率相对于方程中的常数非常小,因此将这些图绘制在一起将产生 3 条看起来平坦的线。我想通过在 y1 和 y2 以及 y2 和 y3 之间打破 yaxis 两次来显示斜率。但是,如果我尝试:
x = linspace(0,10,11);
y1 = 0.01*x;
y2 = -0.01*x + 5;
y3 = 0.05*x + 10;
plot(x,y1)
hold on
plot(x,y2)
plot(x,y3)
breakyaxis([0.15 4.85])
breakyaxis([5.05 9.95])
hold off
我收到一条错误消息:“splitYLim 必须在 get(AX,'YLim') 给出的范围内”。
仅使用 1 个 breakyaxis 功能即可完美运行。有没有办法可以两次打破我的 yaxis?
注意:这只是一个虚构的数据来解释我的问题,我必须将它们全部绘制在一张图中,因此拆分图不是解决方案。我不介意使用其他功能,只要我能打破我的 yaxis 两次。
编辑:
我做了更多的调试,错误消息来自 breakyaxis 的第 72-75 行。以下是触发错误消息的代码:
mainYLim = get(mainAxes,'YLim');
if (any(splitYLim >= mainYLim(2)) || any(splitYLim <= mainYLim(1)))
error('splitYLim must be in the range given by get(AX,''YLim'')');
end
在第一个 breakyaxis 中,mainYLim 设置为 [0,12],而 splitYLim 设置为我指定的范围:[0.15, 4.85]。
但是,在第二个 breakyaxis 中,mainYLim 设置为 [0,1],而 splitYLim ([5.05, 9.95]) 超出了 mainYLim 的范围。
请注意,mainAxes 在前面的代码中定义为mainAxes = gca
.
因此,问题是由于在第二个 breakyaxis 中,mainYLim 报告的范围远小于我的绘图所需的范围。我该如何解决?