How to make subplot accept the positions like matrix?

13 次查看(过去 30 天)
Assume there is 3*3 subplot, subplot(3,3,p) which p gives the location like 1,2,... from left to right and so on. How can I set the p to accept value of the position like the matrix indexing. For example for the 1st subplot, instead of 1, p=(1,1) which shows the xth and yth of the subplot position.
Any idea?

采纳的回答

Adam
Adam 2020-2-28
doc ind2sub
This will convert linear indices to n-dimensional subscripts.
e.g.
[p(1), p(2)] = ind2sub( [3, 3], 2 );
  2 个评论
Steven Lord
Steven Lord 2020-2-28
Note that subplot locations are row major, not column major like arrays in MATLAB. No, I don't know why. That decision predates the start of my tenure at MathWorks.
x = 0:0.1:2*pi;
A = zeros(3);
subplot(3, 3, 1) % upper-left corner
plot(x, sin(x))
title('Sine in position 1')
A(1) = 1; % upper-left corner
subplot(3, 3, 3) % upper-right corner
plot(x, cos(x))
title('Cosine in position 3')
A(3) = 3; % lower-left corner
subplot(3, 3, 8) % middle of the bottom row
plot(x, tan(x))
title('Tangent in position 8')
A(8) = 8 % middle of the last column
If you're using release R2019b or later, consider using the tiledlayout and nexttile functions instead of subplot.
gwoo
gwoo 2021-7-28
编辑:gwoo 2021-7-29
tiledlayout is still, infuriatingly, row-major.
Update: I looked deeper and there is a tiledlayout property that lets you chooose row or column major. "TileIndexing" so.. yea. i guess it is the solution.

请先登录,再进行评论。

更多回答(0 个)

标签

Community Treasure Hunt

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

Start Hunting!

Translated by