How to insert a table under three subplots in a figure
11 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Luis Paniagua
il 23 Ago 2018
Commentato: Adam Danz
il 18 Ott 2022
I am trying to put a table under three plots in the same figure, but when I run the code only the table is visible and the plots dissapear. Below I let the code that I am using.
if true
%figures
%figure for the raw data
figure
h=surf(vec,vec,B.*mask);
set(h,'LineStyle','none');
colormap default ;
hc=colorbar;
hc.Label.String = 'nm';
title('Graph of the Lens')
%figure for the zernikes
figure
g=surf(vec,vec,z_Zern);
set(g,'LineStyle','none');
colormap default ;
gc=colorbar;
gc.Label.String ='nm';
title('Graph of the zernikes')
%figure for the subtraction
figure
h=surf(vec,vec,D);
set(h,'LineStyle','none');
colormap default;
hc=colorbar;
hc.Label.String = 'nm';
title('Subtraction')
%Plots in 2D
figure;
subplot(2,2,1);
imagesc(vec,vec,B);
daspect([1 1 1]);
cb1=colorbar;
cb1.Label.String = 'nm';
caxis([-70 110])
title('Raw data');
%================
subplot(2,2,2);
imagesc(vec,vec,z_Zern);
daspect([1 1 1]);
cb2=colorbar;
cb2.Label.String = 'nm';
caxis([-70 110])
title('Zernike data');
%================
subplot(2,2,3);
imagesc(vec,vec,D);
daspect([1 1 1]);
cb3=colorbar;
cb3.Label.String = 'nm';
caxis([-70 110])
title('Subtraction');
%================
subplot(2,2,4);
tt = {'PV';'rms'};
raw_data = [PV_1;x_rms_1];
zernike_data= [PV_2;x_rms_2];
residual_data = [PV_3;x_rms_3];
T = table(raw_data,zernike_data,residual_data,'RowNames',tt);
uitable('Data',T{:,:},'ColumnName',T.Properties.VariableNames,...
'RowName',T.Properties.RowNames,'Units', 'Normalized', 'Position',[0, 0, 1, 1]);
end
1 Commento
Adam
il 23 Ago 2018
...,'Units', 'Normalized', 'Position',[0, 0, 1, 1]...
You are explicitly telling the table to fill the whole figure so that is what it is doing, and since you add it last it is on top. If you added the axes last then they would be on top of the table.
Risposta accettata
Adam Danz
il 23 Ago 2018
Modificato: Adam Danz
il 23 Ago 2018
It's not that the plot disappears. The plot is under your UI table. You're setting the position of the UI table as
...'Position',[0, 0, 1, 1]...
which consumes the entire figure. Instead, get the position of the 4th subplot and use that position to set the UI table. I changed 4 lines from your code and marked them as " % NEW".
h = subplot(2,2,4); % NEW
hPos = get(h, 'Position'); % NEW
tt = {'PV';'rms'};
raw_data = [PV_1;x_rms_1];
zernike_data= [PV_2;x_rms_2];
residual_data = [PV_3;x_rms_3];
T = table(raw_data,zernike_data,residual_data,'RowNames',tt);
uitable('Data',T{:,:},'ColumnName',T.Properties.VariableNames,...
'RowName',T.Properties.RowNames,'Units', 'Normalized', 'Position', hPos); % NEW
set(h, 'Visible', 'Off') % NEW
end
4 Commenti
Adam Danz
il 18 Ott 2022
@Marta, please provide a minimal working example that reproduces this error.
Here's a minimal working example of my answer that runs in R2022b.
figure
h = subplot(2,2,4);
T = array2table(rand(10));
uitable('Data',T{:,:},'Units',h.Units,'Position',h.Position);
h.Visible = 'Off';
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Line Plots in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
