Matlab & Python 如何在figure上画出表格【优化】

之前写过一次博客 Matlab&Python 如何在figure上画出表格
这次是对该博客的优化
图的结果见下相对之前有很大的进步:

coding

在这里包含数据的绘制,表格的添加,设置表格的大小、位置等

clc
clear
close all;
path(path,'E:\new_matlab_Tool\export_fig3.25\export_fig-master');

%% 表格数据
data_row1=[68,68,86,43];
data_row2=[48,15,37,25];
data=[data_row1;repmat(data_row2,12,1)];

%% 表格作图
fig_size = 800;
figure('color','w','position',[0, 0, fig_size*1.414,fig_size]);

plot( data(:,1), 'k-','LineWidth',1.2 );
hold on;
plot( data(:,1), 'k.','MarkerSize',20);

plot( data(:,2), 'b-','LineWidth',1.2 ); plot( data(:,2), 'b.','MarkerSize',20);
plot( data(:,3), 'r-','LineWidth',1.2 ); plot( data(:,3), 'r.','MarkerSize',20);
plot( data(:,4), 'g-','LineWidth',1.2 ); plot( data(:,4), 'g.','MarkerSize',20);

%% 生成表格行列名称,m行n列
str1='气旋';str2='TC';
m=13;n=4;
column_name=strcat(str1,num2str((1:n)'));
row_name=strcat(str2,num2str((1:m)'));

ut = uitable(gcf,'Data',data,'Position',[550 450 400 246], ...
    'Columnname',column_name,'Rowname',row_name,'BackgroundColor',[0 0.5 0], ...
    'ColumnWidth',{85});

set(gca,'Fontsize',16,'FontWeight','bold','FontName','Times New Roman')
% 暂时找不到合适的方法,调字体,调'ColumnWidth',以及调'Position'

export_fig( gcf, '-png', '-r600', ['figure_table','.png']);

代码解释

这段代码是用于在 MATLAB 中绘制一个带有表格的图形,并将图形保存为 PNG 格式的文件。下面是对代码中各部分的解释:

step1
%% 表格数据
data_row1=[68,68,86,43];
data_row2=[48,15,37,25];
data=[data_row1;repmat(data_row2,12,1)];

这里定义了一个 13 行 4 列的矩阵 data,其中第一行是 data_row1,剩余的行是 data_row2 的重复。这个矩阵将用于绘制图形和表格。

step2
%% 表格作图
fig_size = 800;
figure('color','w','position',[0, 0, fig_size*1.414,fig_size]);

plot( data(:,1), 'k-','LineWidth',1.2 );
hold on;
plot( data(:,1), 'k.','MarkerSize',20);

plot( data(:,2), 'b-','LineWidth',1.2 ); plot( data(:,2), 'b.','MarkerSize',20);
plot( data(:,3), 'r-','LineWidth',1.2 ); plot( data(:,3), 'r.','MarkerSize',20);
plot( data(:,4), 'g-','LineWidth',1.2 ); plot( data(:,4), 'g.','MarkerSize',20);

这个部分绘制了一个带有表格的图形。图形的背景颜色为白色。plot 函数用于绘制 4 条曲线,每条曲线对应 data 矩阵的一列。这里使用不同的颜色和标记来区分不同的曲线。

step3
%% 生成表格行列名称,m行n列
str1='气旋';str2='TC';
m=13;n=4;
column_name=strcat(str1,num2str((1:n)'));
row_name=strcat(str2,num2str((1:m)'));

ut = uitable(gcf,'Data',data,'Position',[550 450 400 246], ...
    'Columnname',column_name,'Rowname',row_name,'BackgroundColor',[0 0.5 0], ...
    'ColumnWidth',{85});

这个部分用于生成表格的行列名称,并将表格添加到图形中。strcat 函数用于生成行列名称的字符串,mn 分别表示表格的行数和列数。uitable 函数用于创建表格,并设置表格的属性,如位置、行列名称、背景颜色和列宽。这里设置表格的位置为 [550 450 400 246],即表格位于图形的右上角,大小为 400×246 像素。

step4
set(gca,'Fontsize',16,'FontWeight','bold','FontName','Times New Roman')
% 暂时找不到合适的方法,调字体,调'ColumnWidth',以及调'Position'

export_fig( gcf, '-png', '-r600', ['figure_table','.png']);

这个部分用于调整图形和表格的字体,并将图形保存为 PNG 文件。set 函数用于设置图形的属性,如字体大小、字体粗细和字体名称。export_fig 函数用于将图形保存为 PNG 格式的文件,文件名为 figure_table.png,分辨率为 600 dpi。

Reference

Mathworks - uitable(中文)
Mathworks - uitable (English)
Matlab&Python 如何在figure上画出表格
matlab如何画一张表格图?