Borrar filtros
Borrar filtros

Combine LineStyleOrder and ColorOrder?!?

29 visualizaciones (últimos 30 días)
jan mischke
jan mischke el 23 de Nov. de 2015
Editada: Adam Danz el 17 de Mzo. de 2023
Can you combine LineStyleOrder and ColorOrder? I am plotting several plots in one subplot with semilogx and I want to change the color AND the LineStyle for every plot. Is that possible or do I have go through the Colors first?

Respuesta aceptada

Mike Garrity
Mike Garrity el 23 de Nov. de 2015
Editada: Adam Danz el 17 de Mzo. de 2023
Update
Starting in MATLAB R2023a you can cycle through LineStyleOrder and ColorOrder together by setting LineStyleCyclingMethod to 'withcolor'. See this answer for a demo.
Prior to R2023a
You mean that you want to lop through them together, right? The way they actually work is to go through all of the entries in the ColorOrder, increment the LineStyleOrder, and then go through the ColorOrder again.
You can see it in this example:
set(gcf,'DefaultAxesColorOrder',[1 0 0; ...
0 1 0; ...
0 0 1], ...
'DefaultAxesLineStyleOrder',{'-','--o',':s'})
plot(magic(9))
legend show
As you can see, the first three plots are the three entries in the ColorOrder (red, green, blue) combined with the first entry in the LineStyleOrder ('-'). Next we get the three colors again with the second entry in the LineStyleOrder ('--o'). Then the three colors again with the third entry in the LineStyleOrder (':s'). If you were to continue, it would start over at the beginning.
If you wanted to increment them together, you'd have to manage it yourself. That would look something like this:
set(gcf,'DefaultAxesColorOrder',[1 0 0; ...
0 1 0; ...
0 0 1], ...
'DefaultAxesLineStyleOrder',{'-','--o',':s'})
ax = gca;
m = magic(9);
hold on
for i=1:9
plot(m(i,:))
ax.LineStyleOrderIndex = ax.ColorOrderIndex;
end
legend show

Más respuestas (1)

Geoff Hayes
Geoff Hayes el 23 de Nov. de 2015
Editada: Geoff Hayes el 23 de Nov. de 2015
Jan - I don't see any reason why you can't combine the two for (example) the current axes (gca) as
set(gca, 'ColorOrder', myColours, 'LineStyleOrder', myLineStyleOrders);
where myColours and myLineStyleOrders describe the colours and line styles that you wish to display (see axes properties on how to specify the values for each of these properties.
  1 comentario
Andre
Andre el 15 de En. de 2021
In this case, the line style will only change after an entire cycle of color order is completed.

Iniciar sesión para comentar.

Categorías

Más información sobre Graphics Object Properties en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by