How can I increase the vertical size of subplots?
44 次查看(过去 30 天)
显示 更早的评论
Hi,
I'm trying to increase the verticle size of my subplots, but I'm having no luck. Can someone please let me know where I've gone wrong.
My code is:
suplotTitle = {'0.4mA', '0.6mA', '0.8mA', '1.2mA', '1.6mA'};
f1=figure('position', [10, 10, 800, 1000]);
for ii=1:5
subplot(6,2,2*ii-1);
b1 = bar(conRR(2:end,1), conRR(2:end,ii+1));
b1.FaceColor = '#D95319';
b1.EdgeColor = 'none';
xticks(1:1:16);
ylim([0 80]);
title(suplotTitle{ii})
set(gca, 'FontSize', 10);
box off
if ii < 5
set(gca,'XTick', []);
end
end
subplot(6,2,5), ylabel('Respiratory Rate (BPM)')
subplot(6,2,9), xlabel('Number of rats (N)')
for ii=1:5
s2 = subplot(6,2,2*ii);
b2 = bar(b9RR(2:end,1), b9RR(2:end,ii+1));
b2.FaceColor = '#0072BD';
b2.EdgeColor = 'none';
xticks(1:1:16);
ylim([0 80]);
title(suplotTitle{ii})
box off
set(gca, 'FontSize', 10);
if ii < 5
set(gca,'XTick', []);
end
end
subplot(6,2,6), ylabel('Respiratory Rate (BPM)');
subplot(6,2,10), xlabel('Number of rats (N)');
%Add legend
hL = subplot(6,2,[11,12]);
poshL = get(hL,'position');
lgd = legend(hL,[b1,b2],'Control','Intervention');
legend box off;
set(lgd,'position',poshL,'Orientation','horizontal', 'FontSize', 12);
axis(hL,'off'); % Turning its axis off
%Add main title
t = sgtitle('Respiratory Rate');
t.FontSize = 15;
t.FontWeight = 'bold';
At the moment my Figure looks like this:
Thanks in advance.
2 个评论
Paresh yeole
2020-6-8
Try using :
set(gca,'Units','centimeters','Position', [0 0 7.5 6])
for each subplot.
采纳的回答
Star Strider
2020-6-8
I got this to work with the previous code, however I couldn’t get it to work with the code you posted. You will need to make the appropriate adjustments to do that.
The change is to add these two lines in each looop:
PosVec = Ax.Position;
Ax.Position = PosVec+[0 -0.005 0 0.005];
and after both loops:
f1.Position = f1.Position+[0 -300 0 300];
That should get you started.
The (Revised) Code —
conRR = [(0:10).' rand(11,5)*80]; % Create Matrix
b9RR = [(0:10).' rand(11,5)*80]; % Create Matrix
suplotTitle = {'0.4mA', '0.6mA', '0.8mA', '1.2mA', '1.6mA'};
f1=figure
for ii=1:5
Ax = subplot(5,2,2*ii-1);
b1 = bar(conRR(2:end,1), conRR(2:end,ii+1));
b1.FaceColor = '#D95319';
b1.EdgeColor = 'none';
xticks(1:1:16);
ylim([0 80]);
title(suplotTitle{ii})
PosVec = Ax.Position;
Ax.Position = PosVec+[0 -0.005 0 0.005];
end
for ii=1:5
Ax = subplot(5,2,2*ii);
b2 = bar(b9RR(2:end,1), b9RR(2:end,ii+1));
b2.FaceColor = '#0072BD';
b2.EdgeColor = 'none';
xticks(1:1:16);
ylim([0 80]);
title(suplotTitle{ii})
PosVec = Ax.Position;
Ax.Position = PosVec+[0 -0.005 0 0.005];
end
f1.Position = f1.Position+[0 -300 0 300];
The Plots —
Original:
This code:
更多回答(1 个)
Bjorn Gustavsson
2020-6-8
You can manually adjust the subplot's axes position like this:
sph = subplot(3,2,1);
dx0 = 0;
dy0 = -0.05;
dwithx = 0.0;
dwithy = 0.1;
set(sph,'position',get(sph,'position')+[dx0,dy0,dwithx,dwithy])
You will have to modify this heavily, but the tweaking shouldn't be too bad for one figure - and might be "impossible" to get right for an absolutely general sub-plots configuration.
There are a number of file-exchange contributions that handles this, or different parts of this:
gettightsubplothandles, tight_subplot, panel, tight-subplot-with-units-in-centimeter, border-less-tight-subplot.
Hopfully you find something useful.
HTH
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Subplots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!