Subplots squished to top of page, manually setting position not working
조회 수: 11 (최근 30일)
이전 댓글 표시
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
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/253443/image.jpeg)
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 >>
댓글 수: 0
채택된 답변
Star Strider
2019년 12월 7일
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
Star Strider
2019년 12월 7일
As always, my pleasure!
You are not the first person to make that mistake!
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!