how to keep parent figure settings after inserting children figures
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
heptagenia
le 4 Avr 2015
Commenté : Philip Caplan
le 13 Avr 2015
I want to create a figure which looks like a subplot (1,3,1-3) but without any space between subplots to compare observed and modeled observations. I've set parent/children figures using a code below:
%%Figure settings
figW = 7.5; % parent figure width
figH = 5.9; % parent figure height
lM = .75; % left margin
rM = .25; % right margin
bM = .75; % bottom margin
tM = .25; % top margin
W = (figW-lM-rM)/3; % width of a subplot
H = (figH-tM-bM); % height of a subplot
axLW = 1.0; % line width
fontS = 8;
fontN = 'Helvetica';
%%Axes
fig_h = figure('Color','w','Units','inches','Position',[0 0 figW figH],...
'PaperOrientation','landscape','PaperSize',[figW figH],'PaperPosition',[0 0 figW figH/figW]);
movegui(fig_h,'center');
ax_1 = axes('Parent',fig_h,'Position',[lM/figW bM/figH W/figW H/figW],...
'Box','on','LineWidth',axLW,'FontSize',fontS,'FontName',fontN);
ax_2 = axes('Parent',fig_h,'Position',[(lM+W)/figW bM/figH W/figW H/figW],...
'Box','on','LineWidth',axLW,'FontSize',fontS,'FontName',fontN);
ax_3 = axes('Parent',fig_h,'Position',[(lM+2*W)/figW bM/figH W/figW H/figW],...
'Box','on','LineWidth',axLW,'FontSize',fontS,'FontName',fontN);
%%Axes settings
set(get(ax_1,'YLabel'),'String','Measured pCO_2 [\muatm]',...
'FontSize',fontS,'FontName',fontN);
set(get(ax_1,'XLabel'),'String','Calculated pCO_2 (pH-DIC) [\muatm]',...
'FontSize',fontS,'FontName',fontN);
set(get(ax_2,'XLabel'),'String','Calculated pCO_2 (pH-ALK) [\muatm]',...
'FontSize',fontS,'FontName',fontN);
set(get(ax_3,'XLabel'),'String','Calculated pCO_2 (ALK-DIC) [\muatm]',...
'FontSize',fontS,'FontName',fontN);
%%Figure limits
max2 = max([pco2b_pal;pco2s_pal;pco2h_pal]);
max3 = max([pco2b_dal;pco2s_dal;pco2h_dal]);
set(ax_1,'XLim',[0 4000],'YLim', [0 3000], 'XTick',1000:1000:3500, 'XTickLabel',{'1000';'2000';'3000'},...
'YTick',500:1000:3000,'YTickLabel',{'500';'1500';'2500'});
set(ax_2,'Xlim',[0 13000],'YLim',[0 3000],...
'XTick',4000:4000:max2,'XTickLabel',{'4000';'8000';'12000'},'YTick',500:1000:3000,'YTickLabel','');
set(ax_3,'Xlim',[0 7000],'YLim',[0 3000],...
'XTick',2000:2000:max3, 'XTickLabel',{'2000';'4000';'6000'},'YTick',500:1000:3000,'YTickLabel','');
The figure looks like that:

But after adding 1:1 line to a child figure 1 using code lines:
%%1:1 Line
xl = (0:1500:3000);
yl = (0:1500:3000);
%%Plot 1 in a parent figure
p1 = plot(xl,yl,'k'); %1:1 line
set(p1,'Parent', ax_1,'Linewidth',1)
the plot looks like that:

My problem is that I don't know how to keep parent figure settings after inserting children figures? Do you know why subplot 3 changes when I insert the line to subplot 1?
Thanks, Gosia
0 commentaires
Réponse acceptée
Debarati Banerjee
le 13 Avr 2015
You can keep the parent figure settings after inserting the children axes by plotting the line directly in the axes where it is meant to be drawn. It can be done by modifying the following lines of code:
%%Plot 1 in a parent figure
plot(ax_1,xl,yl,'k','Linewidth',1);
1 commentaire
Philip Caplan
le 13 Avr 2015
Just to note: if you had not set the parent of "p1" to "ax_1", then the line would have been drawn on the third axes, which got adjusted during the plot. This is why the third subplot changes. Debarati's answer correctly ensures the plotting command is immediately performed on "ax_1".
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Axis Labels dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!