MATLAB Answers


How to set LineStyle for matrix plotting?

Asked by András
on 5 May 2015
Latest activity Commented on by András
on 5 May 2015
I have a matrix that I would like to plot, but I would like each column to be plotted using a different LineStyle. To do so I set the Axes LineStyleOrder property to the desired value, then I set the NextPlot property to 'replacechildren', but for some reason all columns get the same (the first value in LineStyleOrder) LineStyle. I works well with ColorOrder, but not with LineStyles.
Anyone knows why, or how I should solve my problem?
Thanks in advance!


Sign in to comment.


1 Answer

Answer by Michael Haderlein on 5 May 2015
Edited by Michael Haderlein on 5 May 2015
 Accepted Answer

It's not very intuitive, but that's the point (from here):
Axes increments the line style only after using all of the colors in the ColorOrder property .
Plus, you need to set hold all:
set(axes,'LineStyleOrder',{'-','--',':','-.'}') %create axes with respective LineStyleOrder
hold all %Prevent clearing LineStyleOrder
plot(1:3,bsxfun(@plus,rand(3,15),0:14)) %use it
(similar information is given in the help of the axes properties, here)


So there's basically no way to use a custom set of ColorSet and StyleOrder at the same time? I mean:
set( hAx , 'ColorOrder' , [ 0 0 1 ; 0 1 0 ; 1 0 0 ] );
set( hAx , 'LineStyleOrder' , { '-' , ':' , '-.' } );
So that the first column of the data will be blue AND a solid line, the second green AND dotted...
I don't see a possibility to do it this way. I have once made a function which will set the line styles to all children of given axes (useful for b/w printings). But to do it in advance? I wouldn't know how right now.

Sign in to comment.