Change yticks using a stacked plot
56 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Clay Swackhamer
el 22 de Oct. de 2019
Comentada: Eric Roden
el 12 de Mzo. de 2021
Hello,
I am using the stackedplot function to display multiple series of data that share the same x axis. I would like to change the y ticks, but I can't figure out how to do it. In this case, I would like to make the y tick marks go by 4,000. So basically the y axis should have the following tick marks: 0, 4000, 8000, 12000. Attached is the figure. I can't seem to find a tick mark property in this graph and using
yticks(0:4000:12000)
returns the following error:
Using xticks with stackedplot is not supported.
Thanks,
Clay
0 comentarios
Respuesta aceptada
Artemio Soto Breceda
el 23 de Oct. de 2019
You should use the stackedplot with an output argument:
handle = stackedplot(rand(5)); % Plot 5 random vectors with 5 elements each
Then you can use the handle to change the properties of your figure:
handle.AxesProperties(1).YLimits = [0 12000]; % Changes the limits of the first plot
or in a for loop to change them all:
for i = 1:numel(handle.AxesProperties)
handle.AxesProperties(i).YLimits = [0 12000];
end
This does not quite control the ticks, instead it changes the limits of the axis, such as ylim([a b]) would do.
I do not think there is any property for stackedplot to do what you want, but this approach may suffice. Otherwise, I recommend you to use subplot and simply remove the xaxis of each subplot except for the last one.
for i = 1:5
h = subplot(5,1,i);
plot(rand(1,5)); % Plotting random numbers, here you put your data
if i < 5, h.XTick = [];end
box off
end
Then you can do what you want:
h.YTick = [0:4000:12000];
I think using subplot is a much better practice, because it gives you much more freedom.
2 comentarios
Joe Vinciguerra
el 23 de Oct. de 2019
Stackedplot is comparatively new, and lacks a lot of the fine-tune-ability available in other plot types. But I would expect to see this and similar shortcomings addressed in future releases.
Más respuestas (1)
Adam Danz
el 19 de Nov. de 2020
Editada: Adam Danz
el 24 de Nov. de 2020
You can get the axis handles in stackedplot using the undocumented NodeChildren property. Then set YTick.
rng('default')
h = stackedplot(1:20, rand(20,4)*1000+500);
ax = findobj(h.NodeChildren, 'Type','Axes');
set(ax, 'YTick', [600:300:1500], 'YLim', [500,1600])
To set ytick of a selected axis number n,
% set(ax(n), ...)
2 comentarios
Eric Roden
el 12 de Mzo. de 2021
Yes, thank you, it took me a long time to find this, and am very happy I did!
Ver también
Categorías
Más información sobre Line Plots 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!