How to change x-axis ticks labels in stackedplot?

25 ビュー (過去 30 日間)
Ammy
Ammy 2022 年 4 月 6 日
編集済み: Voss 2024 年 6 月 27 日
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?

採用された回答

Voss
Voss 2022 年 4 月 10 日
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 件のコメント
Ammy
Ammy 2022 年 4 月 11 日
編集済み: Voss 2024 年 6 月 27 日
@Voss Thank you!
Voss
Voss 2022 年 4 月 11 日
@Ammy You're welcome!

サインインしてコメントする。

その他の回答 (2 件)

Simon Allosserie
Simon Allosserie 2022 年 4 月 6 日
編集済み: Simon Allosserie 2022 年 4 月 6 日
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 件のコメント
ikushou
ikushou 2022 年 11 月 3 日
No you can not use it when you use stackedplot.
that's really annoying

サインインしてコメントする。


Paul Carchipulla-Morales
Paul Carchipulla-Morales 2023 年 2 月 8 日
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'})
  1 件のコメント
Aboltabol
Aboltabol 2024 年 6 月 27 日
Does not work in 2023A or later.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLine Plots についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by