How do I change the axis exponent of several subplots at once?

조회 수: 12 (최근 30일)
Sander Janssen
Sander Janssen 2022년 5월 30일
댓글: Sander Janssen 2022년 5월 30일
I was wondering if there is a way to change the exponent value of several subplots (all subplots within a figure) at once.
Currently I'm using:
ax = gca;
ax.YAxis.Exponent = 3;
This has to be done to each subplot seperately.
I have tried using:
arrayfun(@(x) YAxis.Exponent(x,3), findobj(gcf,'Type','axes'))
arrayfun(@(x) Exponent(x,3), findobj(gcf,'Type','axes'))
Neither work since Matlab doesn't recognize the functions. Error:
Unrecognized function or variable 'exponent'.
Error in @(x)exponent(x,0)
I think something similar to what I've tried is possible, but I don't know what to put instead of "YAxis.Exponent".
Thank you.

채택된 답변

Jan 2022년 5월 30일
편집: Jan 2022년 5월 30일
arrayfun(@(axH) set(axH.YAxis, 'Exponent', 3), findobj(gcf,'Type','axes'))
AxesH = findobj(gcf,'Type','axes');
set([axesH.YAxis], 'Exponent', 6);
Remember that gca and gcf is fragile: As soon as the user clicks on a different figure, unexpected handles are replied. Prefer to store the handles of the axes objects explicitly, e.g.:
AxesH = gobjects(1, 6);
for k = 1:6
AxesH(k) = subplot(2, 3, k);
  댓글 수: 2
Walter Roberson
Walter Roberson 2022년 5월 30일
Nice use of structure expansion.
Sander Janssen
Sander Janssen 2022년 5월 30일
Thank you, exactly what I was looking for.
I am aware that gca and gcf are fragile, thanks for the heads up though.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Walter Roberson
Walter Roberson 2022년 5월 30일
subplot(2,1,1); plot(randn(1,20) * 1e5)
subplot(2,1,2); plot(randn(1,20) * 1e5)
yax = get(findobj(gcf,'Type','axes'), 'YAxis');
set([yax{:}], 'Exponent', 3)


Help CenterFile Exchange에서 Graphics Object Programming에 대해 자세히 알아보기




Community Treasure Hunt

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

Start Hunting!

Translated by