【发布时间】:2018-07-11 03:06:34
【问题描述】:
我试图通过使用breakyaxis 多次破坏 yaxis。从链接的 cmets 中可以看出,其他人似乎也有多次破坏 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 报告的范围远小于我的绘图所需的范围。我该如何解决?
【问题讨论】:
-
如果在第一个
braekyaxis之后输入get (ax,'ylim')会得到什么? -
你也可以使用小的 y 值和区间,这样你就可以看到斜率,并且在绘图之后改变
yticklabels -
@Adiel 如果我输入
get (ax,'ylim'),我会发现 ax 是未定义的变量。有关该问题的更多详细信息,请参阅我的编辑。 -
因为您没有像在刚刚添加的编辑中那样定义它。也许尝试在第二个命令中输入 [0.505 0.995],因为在一次调用之后 ylim 被转换为 [0 1]。你需要继续调试它,如果你不知道在那里阅读代码,需要一些试验和错误