我正在尝试使用 breakyaxis 多次打破 y 轴。正如链接评论中所见,其他人似乎也有多次打破 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之间两次打断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)
breakyaxis([0.15 4.85])
breakyaxis([5.05 9.95])
hold off
我收到一个错误消息,内容为:“splitYLim 必须在 get(AX,'YLim') 给定的范围内”。只使用一次 breakyaxis 函数可以完美地运行。有没有办法我可以两次打断我的 y 轴?注意:这只是一个编造的数据,用于解释我的问题,并且我必须将它们全部绘制在一个图表中,因此分割图表不是解决方案。我不介意使用其他函数,只要我能够两次打断我的 y 轴。编辑:我进行了更多调试,错误消息来自于 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报告的范围比我的绘图需要的范围要小得多。我该如何解决?
breakyaxis
之后输入get(ax,'ylim')
,你会得到什么? - Adielget(ax,'ylim')
,我会得到ax未定义的变量。请查看我的编辑以获取有关问题的更多详细信息。 - Hosea