Line colour of two y-axis plot

Hi All,
I am plotting multiple lines for y-axis 1 and another line as y-axis 2 using the yyaxis command. If I plot only the first set of data as a single plot with one y-axis, the lines are plotted with different colours. But when I plot using yyaxis left for one set of data, and plot another line for yyaxis left, the data plotted against the first y-axis comes out all the same colour which is not what I want. From below, if I only run 'plot(xdata,y1data)' I get 10 lines all different colours. But if I run from 'yyaxis left' to the end I get 10 lines of the same colour (with symbols which I don't want), and one line of a different colour plotted against the second y-axis. How do I get the multi-colour lines back for the first plot? Thanks.
y1data = magic(10);
y2data = randi([-10 10],10,1);
xdata = [1:10]';
yyaxis left
plot(xdata,y1data);
yyaxis right
plot(xdata, y2data);

2 Comments

That may not be possible. The whole point of assigning one colour to one y-axls and another colour to the other y-axis is to remove any ambiguity about which y-axis scale the lines refer to.
If you want them in different colours, you will have to plot them in different figures.
OK. What I have is a set of data from multiple sensor outputs to be plotted against the left y-axis. I also have a set of temperature readings to be plotted aganist the right y-axis. Together it would show how a set of sensors were responding as the temperature varied, of course the variations from sensors and temperature are on different scales of response, hence my need for two y-axes plots.
Yes I could have plotted the sensor data individually and then added the temperature to the 2nd y-axis. I thought perhaps there was a short-cut but maybe not.
Thank you for considering my question.

Sign in to comment.

 Accepted Answer

Adam Danz
Adam Danz on 23 Dec 2019
Edited: Adam Danz on 23 Dec 2019
Set the LineStyleOrder and ColorOrder properties after selecting the Left/Right yyaxes
y1data = magic(10);
y2data = randi([-10 10],10,1);
xdata = [1:10]';
yyaxis left
set(gca, 'LineStyleOrder', '-', 'ColorOrder', jet(10))
plot(xdata,y1data);
yyaxis right
set(gca, 'LineStyleOrder', '-', 'ColorOrder', jet(10))
plot(xdata, y2data);
You can replace the jet colormap with any other colormap or you can create your own colormap by using an nx3 matrix of RGB values.
You can replace the '-' with any line style or a cell array of line styles to cycle through.

4 Comments

Thanks Adam, that's exactly what I wanted to show. Is jet the colour palette?
Check out the "any other colormap" link in my answer ;)
Sorry, yes, I was too focussed on the code to look beyond it! Thanks again.
Glad I could help!

Sign in to comment.

More Answers (0)

Categories

Find more on 2-D and 3-D Plots in Help Center and File Exchange

Tags

Asked:

on 23 Dec 2019

Commented:

on 23 Dec 2019

Community Treasure Hunt

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

Start Hunting!