writing a table into a subplot of a figure
    4 views (last 30 days)
  
       Show older comments
    
I would like to create a figure with a few subplots, at least one of these being a data table to show the statistics (mean, st. dev., st. err.) of some measurements in the plots.
How do I write a table into a figure? I have tried fprintf, disp, sprintf, all of which write into the workspace, and I have tried text which is good for writing something, but not necessarily the organization of a table. Sometimes numbers will be big and other times they will be small, so using the text command becomes complicated in laying out the table and having it fit into the subplot.
Is there a function for a table? Is there an easier way to do it with text? Can I have a table without figure axes?
0 Comments
Accepted Answer
More Answers (2)
  Matthew
 on 11 May 2012
        I recently worked this out for my personal case - UITABLE is great, but did not give me the look I wanted. Here is what I did:
NOTE: Using Courier is good for the justification issues to get text aligned.
% Convert to text
intCellString = cell([size(sub_rmsint_tab,1) 1]);
for ii = 1:size(sub_rmsint_tab,1)
    thisRow = [];
    for jj = 1:size(sub_rmsint_tab,2)
        if isnan(sub_rmsint_tab(ii,jj))
            thisRow = [thisRow '           '];
        else
            %thisRow = [thisRow sprintf('%7.0f',sub_rmsint_tab(ii,jj))];
            thisRow = [thisRow sprintf('%7.0f\t',sub_rmsint_tab(ii,jj))];
        end
    end
    intCellString{ii,1} = thisRow;
end
% Convert to text
depCellString = cell([size(sub_dep_tab,1) 1]);
for ii = 1:size(sub_dep_tab,1)
    thisRow = [];
    for jj = 1:size(sub_dep_tab,2)
        thisRow = [thisRow sprintf('%7.0f\t',sub_dep_tab(ii,jj))];
    end
    depCellString{ii,1} = thisRow;
end
x = -3;
y = -5;
subplot(1,3,3)
myBigTable = [{'             From Semblance Analysis'};...
    {'   TWTT   Depth  TWTT bsf Depth bsf Vint   Vrms'};...
    intCellString; {'    '};{'    '};{'    '};...
    {'             From Refraction Modeling'};...
    {'   TWTT   Depth TWTT bsf Depth bsf Vint    Vrms'}; ...
    depCellString];
t1 = text(x,y,myBigTable);
set(t1,'fontname','courier')
set(t1,'fontsize',6)
set(t1,'HorizontalAlignment','left')
2 Comments
  KE
 on 28 Mar 2025
				
      Edited: KE
 on 28 Mar 2025
  
			To make it less complicated: he's adding a text object to the plot. He uses sprintf to turn his number entries into text. The text is multiline to make the table rows, and has spaces to make the columns. May be better in a subplot than uitable. Could combine with detab to get the columns to line up.
  Brad
 on 17 May 2012
        4 Comments
  Norman Koren
 on 1 Mar 2013
				It worked well for me when I used a well-formed HTML expression:
 'Δ'
But frustrating that it's inconsistent with the rest of Matlab and not well documented (I'd be out of luck if it weren't for this post).
See Also
Categories
				Find more on Labels and Annotations in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




