How to change x-axis ticks labels in stackedplot?

25 次查看(过去 30 天)
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 个)

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.

Paul Carchipulla-Morales
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