Plot multiple similar data in same graph

后端 未结 2 804
感动是毒
感动是毒 2021-01-16 14:03

I wanted to generate a plot (X vs Y), and Z values depend on the Y. The example is shown in the figure below. The matrix size of X is same with Z but not Y. I can plot Z aga

2条回答
  •  清酒与你
    2021-01-16 15:00

    The simplest would be to shift Z data. But note that Z2 would look like to be oscillating around 1 - so this is a neat visual representation, but might mislead.

    % Simple version - shift Z curves by 0, 1, ... (as recommended by @Cris Luengo)
    shiftMat = repmat(0 : size(Z, 2)-1, size(Z,1), 1);
    Z = Z + shiftMat;
    
    %Min shift up to have non-overlapping - curves touching
    for i = 2 : size(Z, 2)
       Zdif = (Z(:, i-1) - Z(:, i));
       Z(:, i) = Z(:, i) + max(Zdif); % + 0.01 to separate them a little bit.
    end
    
    %Bigger shift up, to have all points of Z(2) equal or above all points of z1.
    for i = 2 : numZ
        Zdif = max(Z(:, i-1))-min(Z(:, i));
        Z(:, i) = Z(:, i) + Zdif;
    end
    

    Another possibility is to have multiple Y axis and each Z curve plotted against its own Y axis. This is likely fancier and shouldn't mislead, but it is way more work, even after you grab the function, as you still need to position all those axes. MATLAB by default lets you use only 2 axes, so grab a function from fileexchange to add more: https://www.mathworks.com/matlabcentral/fileexchange/9016-addaxis

提交回复
热议问题