如何制作多个X轴变化的图形?

时间:2019-11-25 12:31:22

标签: matlab matlab-figure

我需要在同一y轴上绘制多个图形,但是x轴对我来说有点棘手:

假设它从0a,增加1,则需要有总共a-1个不同的间隔。

其中每一个都应在a处完成,但是它也必须具有不同的初始化点。如下图所示,只有第一个从0开始,而每个下一个从前一个加一个开始。我用来使我的思想尽可能清晰地形象化的两条虚线不是必需的。

我将不胜感激!

enter image description here

1 个答案:

答案 0 :(得分:1)

复制原始间隔0 ... a a次(据我了解,您将有a个间隔,而不是a-1),这样就得到了一个矩阵{{ 1}},大小为X。将[a x a+1]的左下三角设置为X,这样行现在代表您的(缩短)间隔。在NaN上进行计算。请注意,这些必须正确支持/忽略X值。

在那之后,您需要适当地调整NaN中的值,以便随后绘制间隔。基本上,我们为每行添加一些固定值。

最后,我们需要适当的bufferxticks。因此,我们从X和修改后的X中提取所有值,并摆脱了X值。

这是完整的代码段:

NaN

输出(Octave 5.1.0,也已通过MATLAB Online测试)如下:

xticklabels

例如,如果仅需要每个间隔的开始和结束,则必须进一步预处理% Parameter a = 7; % Initialize intervals X = repmat(0:a, a, 1); X = X .* (ones(size(X)) + tril(nan(size(X)), -1)); % Calculation on these intervals; attention: there are NaN in X Y = sin(X / a * 2 * pi); % Modify X for plotting X_plot = X; X_plot(2:end, :) = X_plot(2:end, :) + cumsum(a:-1:2).'; % Get xticks xt = X_plot.'; xt = xt(:); xt(isnan(xt)) = []; % Get xticklabels xtl = X.'; xtl = xtl(:); xtl(isnan(xtl)) = []; % Plot plot(X_plot.', Y.'); xticks(xt); xticklabels(xtl); xt

希望有帮助!