更新答案
代码的插入版本 V2
V2 版本的代码允许显示无限对的数据,而且比 V1 更简单。
% Generation of example data
num=1:33;
number_of_data_colums=14;
num=[num' rand(length(num),number_of_data_colums)];
% Generation of legend string
for i=1:number_of_data_colums
legendCell{i}=['Absor. ' num2str(i)];
end
% Get the size of data to be plotted (columns from 2 to ...)
[r,c]=size(num);
n_data=floor((c-1)/2);
% Define the number of data to be plotted in each subplt
data_x_plot=2;
% Consistency check: if the number of column data is not even generate an
% error message and exit
if(n_data*2 ~= (c-1))
error('Number of data columns is not even')
else
% Define the number of subplot of each figure
n_sub_plot=3;
% Subplot and figure counters
s_plot_cnt=1;
fig_cnt=1;
% Create the first figure
figure
% External loop on figures
for i=2:2:n_data*2
% If three subplot have been added to a figure, open a new figure
if(s_plot_cnt == 4)
% The Title is assigne to the first subplot of each figure
title(ax(fig_cnt,1),['STATION ' num2str(fig_cnt)],'fontweight','bold','fontsize',16);
s_plot_cnt=1;
fig_cnt=fig_cnt+1;
figure
end
ax(fig_cnt,s_plot_cnt)=subplot(n_sub_plot,1,s_plot_cnt);
% The indices of columns to be plotted are computed automatically
plot(num(:,1), num(:,i:i+1));
grid on;
box on;
xlabel('Wavelength')
ylabel('Absorbance')
% add legend
legend(legendCell(i-1:i),-1)
% Increment subplot's counter
s_plot_cnt=s_plot_cnt+1;
% legend boxoff
end
end
% Add the last title
title(ax(fig_cnt,1),['STATION ' num2str(fig_cnt)],'fontweight','bold','fontsize',16);
上一个答案和
代码版本 V1
我不确定我是否理解了您的问题,但是,如果您有 6 对数据并且想要 3 个子图,则需要 2 个数字。
我已经修改了您的原始脚本,以便自动确定您需要的图形数量,生成子图并在每个子图中绘制 2 组数据。
更新的代码 - 现在带有图例
% Generation of example data
num=1:33;
num=[num' rand(length(num),12)];
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% UPDATED CODE STARS HERE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Generation of legend string
legendCell{1}='Wavel';
for i=2:13
legendCell{i}=['Absor. ' num2str(i)];
end
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% UPDATED CODE ENDS HERE
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Get the size of data to be plotted
[r,c]=size(num);
% Define the number of data to be plotted in each subplt
data_x_plot=2;
% Define the number of subplot of each figure
n_sub_plot=3;
% Evaluate the number of figures to be created
n_fig=(c-1)/(data_x_plot*n_sub_plot);
% Define the index of data columns
idx=[2:2:c-1];
idx=reshape(idx,n_sub_plot,data_x_plot)';
% External loop on figures
for i=1:n_fig
figure
% Internal loop on subplots
for j=1:n_sub_plot
% The subplot indices are computed automatically
ax(i,j)=subplot(n_sub_plot,1,j);
% The indices of columns to be plotted are computed automatically
plot(num(:,1), num(:,idx(i,j):idx(i,j)+1));
grid on;
box on;
xlabel('Wavelength')
ylabel('Absorbance')
% add legend
legend(legendCell(idx(i,j):idx(i,j)+1),-1)
% legend boxoff
end
% The Title is assigne to the first subplot of each figure
title(ax(i,1),['STATION ' num2str(i)],'fontweight','bold','fontsize',16);
end
给定一组 12 列数据,这是输出:
更新的图表,带有图例