Subplots squished to top of page, manually setting position not working

I am trying to create a set of 12 subplots on a tabloid landscape layout to print to PDF.
The plots are all squished to the top of the page if I don't adjust the positioning. When I do adjust it, the plots disappear.
I don't want to use an outside function from the file exchange. I just want to use my own layout. Using R2018a
No Position Adjustment
x = randperm(40, 8);
y = randperm(10, 8);
g = randi([1,2],8,1);
nplts = 12;
for ii = 1:nplts
ax(ii) = subplot(nplts, 3, ii);
gscatter(x,y,g,'kmbgc')
box on; grid on
xlabel('x', 'FontSize', 10)
ylabel('y', 'FontSize', 10)
plotname = char(strcat('My_Plot', {' '}, num2str(ii)));
title(plotname, 'FontSize', 10, 'Interpreter', 'None')
lgd = legend;
lgd.FontSize = 6; lgd.Location = 'southoutside';
end
With Position Adjustment
x = randperm(40, 8);
y = randperm(10, 8);
g = randi([1,2],8,1);
nplts = 12;
pos1 = [0.5 4.0 7.5 0.5 4.0 7.5 0.5 4.0 7.5 0.5 4.0 7.5];
pos2 = [14 14 14 10 10 10 6 6 6 2 2 2];
wid = 3;
ht = 2;
for ii = 1:nplts
ax(ii) = subplot(nplts, 3, ii);
gscatter(x,y,g,'kmbgc')
box on; grid on
xlabel('x', 'FontSize', 10)
ylabel('y', 'FontSize', 10)
plotname = char(strcat('My_Plot', {' '}, num2str(ii)));
title(plotname, 'FontSize', 10, 'Interpreter', 'None')
lgd = legend;
lgd.FontSize = 6; lgd.Location = 'southoutside';
set(gca, 'units', 'inches')
p = [pos1(ii) pos2(ii) wid ht];
set(gca, 'Position', p)
end
<< blank figure >>

 Risposta accettata

The code tells subplot to plot 12 rows and 3 columns.
Try this instead:
ax(ii) = subplot(nplts/3, 3, ii);
The result is much more readable!

2 Commenti

oh my gosh, what a dumb mistake... so obvious now, thank you
As always, my pleasure!
You are not the first person to make that mistake!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su 2-D and 3-D Plots in Centro assistenza e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by