subplot with two different x axis
Afficher commentaires plus anciens
I am trying to make a plot of several figures. I combine them using subplot. The only problem is that the label of the top x axis shifts the red part of the plot down, while the black part stays at its place. This gives a really ugly plot. How do I keep the figure intact?
%% SW N LLM Layers settled
Depth_SW_N_LLM=0:0.1:8.2;
Depth_SW_N_LLM=Depth_SW_N_LLM';
TL_SW_N_LLM=zeros(83,1); %Thickness Layers
TL_SW_N_LLM(1:21,1)=2;
TL_SW_N_LLM(22:27,1)=0.6;
TL_SW_N_LLM(28:41,1)=1.4;
TL_SW_N_LLM(42:54,1)=1.3;
TL_SW_N_LLM(54:83,1)=2.9;
D_SW_N_LLM=zeros(83,1); %Density Layers
D_SW_N_LLM(1:21,1)=1;
D_SW_N_LLM(22:27,1)=1.0466;
D_SW_N_LLM(28:41,1)=1.0498;
D_SW_N_LLM(42:54,1)=1.2659;
D_SW_N_LLM(54:83,1)=1.34269;
PS_SW_N_LLM=zeros(83,1); %PS Layers
PS_SW_N_LLM(1:21,1)=0;
PS_SW_N_LLM(22:27,1)=16.755;
PS_SW_N_LLM(28:41,1)=17.276;
PS_SW_N_LLM(42:54,1)=35.87;
PS_SW_N_LLM(54:83,1)=30.897;
SW_N_LLM_Matrix=[Depth_SW_N_LLM,TL_SW_N_LLM,D_SW_N_LLM,PS_SW_N_LLM];
figure('Name','SW N LLM','NumberTitle','off');
title('Density and particle size over the depth of the sample')
ax1 = gca; % current axes
ax1.XColor = 'r';
line(SW_N_LLM_Matrix(:,3),SW_N_LLM_Matrix(:,1),'Parent',ax1,'color','r')
set(gca, 'YDir','reverse')
set(gca, 'XAxisLocation', 'top')
axis([0.9 1.5 0 9])
xlabel('Density [g/cm3]')
ax1_pos = ax1.Position; % position of first axes
ax2 = axes('Position',ax1_pos,...
'XAxisLocation','bottom',...
'YAxisLocation','left',...
'Color','none');
line(SW_N_LLM_Matrix(:,4),SW_N_LLM_Matrix(:,1),'Parent',ax2,'Color','k')
set(gca, 'YDir','reverse')
axis([0 50 0 9])
xlabel('Particle size [um]')
ylabel('Depth [cm]')
%% SW N LLMM SETTLED
Depth_SW_N_LLMM=0:0.1:8.5;
Depth_SW_N_LLMM=Depth_SW_N_LLMM';
TL_SW_N_LLMM=zeros(86,1); %Thickness Layers
TL_SW_N_LLMM(1:3,1)=0.3;
TL_SW_N_LLMM(4:21,1)=1.8;
TL_SW_N_LLMM(22:34,1)=1.3;
TL_SW_N_LLMM(35:45,1)=1.1;
TL_SW_N_LLMM(46:70,1)=2.5;
TL_SW_N_LLMM(71:86,1)=1.5;
D_SW_N_LLMM=zeros(86,1); %Density Layers
D_SW_N_LLMM(1:3,1)=1;
D_SW_N_LLMM(4:21,1)=1.02;
D_SW_N_LLMM(22:34,1)=1.0448;
D_SW_N_LLMM(35:45,1)=1.2069;
D_SW_N_LLMM(46:70,1)=1.4539;
D_SW_N_LLMM(71:86,1)=0;
PS_SW_N_LLMM=zeros(86,1); %Thickness Layers
PS_SW_N_LLMM(1:3,1)=0;
PS_SW_N_LLMM(4:21,1)=14.108;
PS_SW_N_LLMM(22:34,1)=16.385;
PS_SW_N_LLMM(35:45,1)=30.137;
PS_SW_N_LLMM(46:70,1)=45.569;
PS_SW_N_LLMM(71:86,1)=0;
SW_N_LLMM_Matrix=[Depth_SW_N_LLMM,TL_SW_N_LLMM,D_SW_N_LLMM,PS_SW_N_LLMM];
figure('Name','SW N LLMM','NumberTitle','off');
title('Density and particle size over the depth of the sample')
ax1 = gca; % current axes
ax1.XColor = 'r';
line(SW_N_LLMM_Matrix(:,3),SW_N_LLMM_Matrix(:,1),'Parent',ax1,'color','r')
set(gca, 'YDir','reverse')
set(gca, 'XAxisLocation', 'top')
axis([0.9 1.5 0 9])
xlabel('Density [g/cm3]')
ax1_pos = ax1.Position; % position of first axes
ax2 = axes('Position',ax1_pos,...
'XAxisLocation','bottom',...
'YAxisLocation','left',...
'Color','none');
line(SW_N_LLMM_Matrix(:,4),SW_N_LLMM_Matrix(:,1),'Parent',ax2,'Color','k')
set(gca, 'YDir','reverse')
axis([0 50 0 9])
xlabel('Particle size [um]')
ylabel('Depth [cm]')
%% plot
figure('Name','SW N','NumberTitle','off');
subplot(1,2,1)
title('SW N LLM')
ax1 = gca; % current axes
ax1.XColor = 'r';
line(SW_N_LLM_Matrix(:,3),SW_N_LLM_Matrix(:,1),'Parent',ax1,'color','r')
set(gca, 'YDir','reverse')
set(gca, 'XAxisLocation', 'top')
axis([0.9 1.5 0 9])
xlabel('Density [g/cm3]')
ax1_pos = ax1.Position; % position of first axes
ax2 = axes('Position',ax1_pos,...
'XAxisLocation','bottom',...
'YAxisLocation','left',...
'Color','none');
line(SW_N_LLM_Matrix(:,4),SW_N_LLM_Matrix(:,1),'Parent',ax2,'Color','k')
set(gca, 'YDir','reverse')
axis([0 50 0 9])
xlabel('Particle size [um]')
ylabel('Depth [cm]')
subplot(1,2,2)
title('SW N LLMM')
ax1 = gca; % current axes
ax1.XColor = 'r';
line(SW_N_LLMM_Matrix(:,3),SW_N_LLMM_Matrix(:,1),'Parent',ax1,'color','r')
set(gca, 'YDir','reverse')
set(gca, 'XAxisLocation', 'top')
axis([0.9 1.5 0 9])
xlabel('Density [g/cm3]')
ax1_pos = ax1.Position; % position of first axes
ax2 = axes('Position',ax1_pos,...
'XAxisLocation','bottom',...
'YAxisLocation','left',...
'Color','none');
line(SW_N_LLMM_Matrix(:,4),SW_N_LLMM_Matrix(:,1),'Parent',ax2,'Color','k')
set(gca, 'YDir','reverse')
axis([0 50 0 9])
xlabel('Particle size [um]')
ylabel('Depth [cm]')
3 commentaires
Adam Danz
le 12 Avr 2019
" The only problem is that the label of the top x axis shifts the red part of the plot down, while the black part stays at its place. This gives a really ugly plot."
A screen shot would help a lot.
Lodewijk Pleij
le 12 Avr 2019
Heesung Jung
le 3 Nov 2022
Wow! You are a GOAT!!! I couldn't find any other way to do this. But it really works just fine! I was having some problem just for plotting multi axes in subplot.
Réponses (1)
This was a bugger but I finally got it working.
It only works when the margins are symmetric. In this example, the left and right margins are 0.12 (normalized units) and the upper and lower margins are also 0.12. That way when the figure resizes, both axes resize to the same positions.
figure('Name','SW N LLM','NumberTitle','off');
ax1 = axes('position', [.12 .12 .76 .76]); %margins must be symmetric!
ax1.XColor = 'r';
ax1.YDir = 'reverse';
ax1.XAxisLocation = 'top';
line(SW_N_LLM_Matrix(:,3),SW_N_LLM_Matrix(:,1),'Parent',ax1,'color','r')
title(ax1, 'Density and particle size over the depth of the sample')
xlabel(ax1, 'Density [g/cm3]')
xlim(ax1, [0.9, 1.5]);
ylim(ax1, [0, 9]);
ax2 = axes('position', ax1.Position);
ax2.XAxisLocation = 'bottom';
ax2.YAxisLocation = 'left';
ax2.Color = 'none';
ax2.YDir = 'reverse';
line(SW_N_LLM_Matrix(:,4),SW_N_LLM_Matrix(:,1),'Parent',ax2,'Color','k')
xlabel(ax2, 'Particle size [um]')
ylabel(ax2, 'Depth [cm]')
xlim(ax2, [0, 50])
ylax1 = ylim(ax1);
ylim(ax2, ylax1)

3 commentaires
Lodewijk Pleij
le 16 Avr 2019
Modifié(e) : Lodewijk Pleij
le 16 Avr 2019
Adam Danz
le 16 Avr 2019
I see... hmmmm. Let's see if I can think of something else..
Lodewijk Pleij
le 16 Avr 2019
Catégories
En savoir plus sur Graphics Performance dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

