Plots graphs with arbitrary number of Y-axes. Generalization of plotyy.


Updated 17 Apr 2015

View License

plotyn Extends plot to create a separate Y-axis for each dataset. It is a generalization of Matlab's inbuilt function PLOTYY.
Creation mode, needs to be run first:
Syntax: [hax, hlines, data] = plot4y(data)
Syntax: [hax, hlines, data] = plot4y(data, pos)
Syntax: [hax, hlines, data] = plot4y(data, pos, parent)

Update mode, to be performed on existing axes to update their plots, colors or Y-axis labels:
Syntax: plot4y(hax, hlines, data)

data is a struct with at least two fields (X, Y). The dimensionality of data determines the number of graphs:
* data(1).X X coordinates of first dataset (Same for all)
* data(i).Y Y coordinates of i-th dataset
* data(i).Color Color of i-th dataset (Optional)
* data(i).YLabel Y-axis label of i-th dataset (Optional)

* pos Array of 5 numbers positioning the axes on the current figure (handle) in 'Pixel' units
* parent Handle onto which the axes are drawn

* hax Double array containing the axes' handles
* hlines Double array containing the lines' handles
* data Struct with the input data

x = 0 : 10; data(1).X = x;
data(1).Y = x .^ 1; data(1).YLabel = 'First Y-axis';
data(2).Y = x .^ 2; data(2).YLabel = 'Second Y-axis';
data(3).Y = x .^ 3; data(3).YLabel = 'Third Y-axis';
data(4).Y = x .^ 4; data(4).YLabel = 'Fourth Y-axis';
[hax, hlines, data] = plotyn(data);
legend(hlines, 'y = x', 'y = x^2', 'y = x^3', 'y = x^4', 2, 'Location', 'NorthWest');

Now, the data in the graph can be changed for example in datasets 2 and 3:

data(2).Y = x .^ (1 / 2);
data(3).Y = x .^ (1 / 3);
plotyn(hax, hlines, data)

See also plot, plotyy

Based on:
plotyyy.m by Denis Gilbert, Ph.D.
ploty4.m by Peter (PB) Bodin

Created by modification of the aforementioned functions by:

Jakub Nedbal
April 2015
Distributed under BSD license.

Cite As

Jakub Nedbal (2023). plotyn(varargin) (, MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2014b
Compatible with any release
Platform Compatibility
Windows macOS Linux
Find more on Two y-axis in Help Center and MATLAB Answers
Tags Add Tags

Inspired by: plotyyy, ploty4.m

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes

Added updated file with fixed help section.

Another refinement of the description.

Further improved the description.

Fixed the description.