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'})

카테고리

Help CenterFile Exchange에서 Line Plots에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by