How to change x-axis ticks labels in stackedplot?

20 Ansichten (letzte 30 Tage)
Ammy
Ammy am 6 Apr. 2022
Bearbeitet: Voss am 27 Jun. 2024
h = stackedplot(rand(6,3));
I want to set x-axis ticks according to my own defined set i.e., instead of 1:6, I want to replace x-axisticks [1, 2,3 ,4,5,6] to ['A', 'S','T', 'AAA', 'BBB', 'ZZZ'] , by rotating it to 90 degree that is vertically insted of horizontally?

Akzeptierte Antwort

Voss
Voss am 10 Apr. 2022
There does not seem to be an easy way to set the XTick or XTickLabel of a StackedLineChart object (such as what's created by stackedplot):
data = rand(6,3);
h = stackedplot(1:6,data);
% try a couple of things, neither of which work
try
set(h,'XTick',1:6,'XTickLabel',{'A' 'S' 'T' 'AAA' 'BBB' 'ZZZ'})
catch ME
disp(['Cannot use set(_,''XTick''): ' ME.message]);
try
xticks(h,1:6)
catch ME
disp(['Cannot use xticks(_): ' ME.message]);
end
end
Cannot use set(_,'XTick'): Unrecognized property XTick for class StackedLineChart.
Cannot use xticks(_): Using xticks with stackedplot is not supported.
However, you can do it if you use tiledlayout (or subplot):
figure();
tiledlayout(3,1,'TileSpacing','tight');
for i = [1 2 3]
ax = nexttile;
plot(data(:,i));
box off
if i < 3
set(get(ax,'XAxis'),'Visible','off');
end
ylabel(ax,sprintf('Column %d',i), ...
'Rotation',0, ...
'HorizontalAlignment','right');
end
% now ax is the bottom axes
set(ax, ...
'XTick',1:6, ...
'XTickLabel',{'A','S','T','AAA','BBB','ZZZ'}, ...
'XTickLabelRotation',90);
  2 Kommentare
Ammy
Ammy am 11 Apr. 2022
Bearbeitet: Voss am 27 Jun. 2024
@Voss Thank you!
Voss
Voss am 11 Apr. 2022
@Ammy You're welcome!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Simon Allosserie
Simon Allosserie am 6 Apr. 2022
Bearbeitet: Simon Allosserie am 6 Apr. 2022
Use xtick and xticklabels to change to the A, S, T, ... labels
I don't understand what you further mean with the rotating 90° though.
  1 Kommentar
ikushou
ikushou am 3 Nov. 2022
No you can not use it when you use stackedplot.
that's really annoying

Melden Sie sich an, um zu kommentieren.


Paul Carchipulla-Morales
Paul Carchipulla-Morales am 8 Feb. 2023
There is a quicker method that worked for me using NodeChildren in MATLAB2021b.
h = stackedplot(rand(6,3));
ax = findobj(h.NodeChildren, 'Type','Axes');
set(ax,'XTick',[1:6],'XTickLabel',{'A', 'S','T', 'AAA', 'BBB', 'ZZZ'})

Kategorien

Mehr zu Line Plots finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by