File Exchange

image thumbnail


version (1.47 KB) by

MULTIPLOTYYY allows the user to plot multiple lines on three sets of y-axes.



View License

MULTIPLOTYYY plots using three sets of y-axes values. Additionally, multiple lines can be plotted against each y-axis. Therefore, the inputs to the function must be grouped into cell arrays.
Here is an example call to the function:
x1 = (0:0.01:1)';
x2 = (0:0.1:1)';
x3 = (0:0.05:1)';
y1 = x1;
y2 = x2.^2;
y3 = x3.^3;
y4 = sin(x1);
y5 = fliplr(2*x1.^2);
y6 = 7*cos(x1);
y7 = 7*log(x1+1.2);
ylabels{1}='First y-label';
ylabels{2}='Second y-label';
ylabels{3}='Third y-label';
[ax,hlines] = multiplotyyy({x1,y1,x2,y2,x3,y3,x1,y4},{x1,y5},{x1,[y6,y7]},ylabels);legend(cat(1,hlines{:}),'a','b','c','d','e','f','g','location','w')

Comments and Ratings (10)


clks (view profile)

Thank you! How can I use this function when I want to plot e.g. two multiplotyyy plots in one window? I think subplot is not working with it. Can someone help me please?

Shiva Asapu

This is wonderful. Just what I was looking for.

Ainara Lopez

Great function Laura! Thank you very much. Really useful!

Great function! I needed to plot Power and Thrust curves of a wind-turbine for a college work, and multiplotyyy worked perfectly.

Thank you very much! I'll make sure you appear on the acknowledgements.

Laura Proctor

Andreas, all the lines are saved in the output, hlines. You can change the style using these. Or, you can change it in the code. If you let me know what you're looking for, I can help out.

To work with the legend, you can use the following modifications after you call the code that will align the axes with a legend on the left hand side. Please feel free to contact me directly, I'd be happy to help!

>> leg = legend(cat(1,hlines{:}),'a','b','c','d','e','f','g','location','w');
>> leg.Location = 'westoutside';
>> ax(2).Position = ax(1).Position;
>> ax(3).Position = ax(1).Position;
>> offset = 0.7/5.5;
>> ax(3).Position(3) = ax(3).Position(3) + offset;
>> ax(3).XLim = [ ax(1).XLim(1) ax(1).XLim(2)*(1 + 1/(ax(1).Position(3)) * offset)];

Great tool!! Is there a way to change the linestyle?

The only problem is, that the 2nd & 3rd axis are messed up when I put the legend outside of the plot. Can anybody help me with this? When I plot multiple lines it's confusing with the legend inside the plot. Thanks!


when I run the example it shows me that: Undefined function 'multiplotyyy' for input arguments of type 'cell'
what is it wrong then? thanks!


R (view profile)

Couple of mistakes in the example, but otherwise works as advertised, thanks!


Updated license


modified calls in accordance with updated graphics


I fixed the mistakes in the original example call.

MATLAB Release
MATLAB 8.4 (R2014b)

Inspired by: plotyyy

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video