文章目錄
- 國獎論文繪圖復現代碼,可直接運行
- 柱狀圖
- 橫向柱狀圖
- 分組柱狀圖
- 堆疊柱狀圖
- 堆疊柱狀圖2
- 三維柱狀圖
- 完整復現代碼
國獎論文繪圖復現代碼,可直接運行
數模比賽的繪圖是非常重要得,這篇文章給大家分享我自己復現的國獎優秀論文的代碼,基于Matalab來實現,可以直接運行出圖。之前的文章也有分享【折線圖】的繪制,這篇文章主要分享【柱狀圖】。
【數學建模美賽速成系列】O獎論文繪圖復現代碼
柱狀圖
%% 柱狀圖
clc;clear;close all;
% load('color_list.mat')
% color=color_list(1:6,:);
color=[0.717647058823529,0.682352941176471,0.741176470588235;...0.807843137254902,0.792156862745098,0.890196078431373;0.580392156862745,...0.525490196078431,0.729411764705882;0.392156862745098,0.345098039215686,...0.470588235294118;0.560784313725490,0.533333333333333,0.741176470588235;...0.372549019607843,0.282352941176471,0.600000000000000;0.0156862745098039,...0.0196078431372549,0.0156862745098039];% 顏色數據% color=[0.741176470588235,0.729411764705882,0.725490196078431;0.525490196078431,...
% 0.623529411764706,0.752941176470588;0.631372549019608,0.803921568627451,...
% 0.835294117647059;0.588235294117647,0.576470588235294,0.576470588235294;...
% 0.0745098039215686,0.407843137254902,0.607843137254902;0.454901960784314,...
% 0.737254901960784,0.776470588235294;0.0156862745098039,0.0196078431372549,0.0156862745098039];% 顏色y=[28,34,18,13];%柱狀圖縱坐標
x=[1,2,3,4]; %柱狀圖橫坐標%%初始化顯示位置 [x,y,dx,dy] 從 x,y坐標開始,dx,dy為沿升的長度
figure('Units', 'pixels', ...'Position', [100 100 460 275]);width=0.7; %柱狀圖寬度 0~1
for i=1:length(y)%bar(i,y(i),width) width 柱狀圖寬占比 ,FaceColor 柱狀圖填充顏色 ,EdgeColor 柱狀圖邊緣顏色% LineWidth 邊緣線寬 set(bar(i,y(i),width),'FaceColor',color(i,:),'EdgeColor',color(i+3,:),'LineWidth',2)hold on
end%繪制虛線
ylabel('Time on Warm Floor(%)')xticks([1 2 3 4]);
xticklabels({'objedct1','objedct2','objedct3','objedct4'})
box off
%坐標軸字體和大小
set(gca,"FontName","Times New Roman","FontSize",12,"LineWidth",2)
title("TPT Timecourse","FontName","Times New Roman","FontSize",12,"LineWidth",2);
橫向柱狀圖
%% 橫向柱狀圖
clc;clear;close all;
% load('color_list.mat')
% color=color_list(1:6,:);
color=[ 0.1804 0.7804 0.78820.7137 0.6353 0.87060.3529 0.6941 0.93731.0000 0.7255 0.5020];% 顏色數據y=[28,34,18,13];%柱狀圖縱坐標
x=[1,2,3,4]; %柱狀圖橫坐標%%初始化顯示位置 [x,y,dx,dy] 從 x,y坐標開始,dx,dy為沿升的長度
figure('Units', 'pixels', ...'Position', [100 100 500 305]);width=0.7; %柱狀圖寬度 0~1
for i=1:length(y)%bar(i,y(i),width) width 柱狀圖寬占比 ,FaceColor 柱狀圖填充顏色 ,EdgeColor 柱狀圖邊緣顏色% LineWidth 邊緣線寬 set(barh(i,y(i),width),'FaceColor',color(i,:),'EdgeColor',color(i,:),'LineWidth',2)hold on
end%繪制虛線
xlabel('Time on Warm Floor(%)')yticks([1 2 3 4]);
yticklabels({'objedct1','objedct2','objedct3','objedct4'})box off
%坐標軸字體和大小
set(gca,"FontName","Times New Roman","FontSize",12,"LineWidth",2)title("TPT Timecourse","FontName","Times New Roman","FontSize",12,"LineWidth",2);set(gca,'xgrid','on');
分組柱狀圖
%% 分組柱狀圖
clc;clear;close all;
color=[0.741176470588235,0.729411764705882,0.725490196078431;0.525490196078431,...0.623529411764706,0.752941176470588;0.631372549019608,0.803921568627451,...0.835294117647059;0.588235294117647,0.576470588235294,0.576470588235294;...0.0745098039215686,0.407843137254902,0.607843137254902;0.454901960784314,...0.737254901960784,0.776470588235294;0.0156862745098039,0.0196078431372549,0.0156862745098039];% 顏色1data=[1.5,4,5;18,24,25;6,7,8];
b=bar(data);hold on
erro_data=[1,1,3;6,0.5,1;0.2,0.1,2];ax = gca;
for i = 1 : size(data,2)x_data(:, i) = b(i).XEndPoints';
end% for i=1:3
% errorbar(x_data(:,i),data(:,i),erro_data(:,i),'LineStyle', 'none','Color',color(i+3,:) ,'LineWidth', 2,'CapSize',18)
% endax.YLim=[0,30];
for i =1:3
b(i).FaceColor = color(i,:);
b(i).EdgeColor= color(i+3,:);
b(i).LineWidth=1.5;
end
ax.XTickLabels ={'CT', 'WT', 'RWD'};set(gca,"FontName","Times New Roman","FontSize",12,"LineWidth",1.2)% box off
legend('Object1','Object2','Object3')%% 分組柱狀圖配色2
clc;clear;close all
color=[0.635294117647059,0.168627450980392,0.168627450980392;0.462745098039216,0.121568627450980,0.117647058823529;0,0,0];% 顏色1data=[1.5,4,5;18,24,25;6,7,8];
b=bar(data);
hold on
erro_data=[1,1,3;6,0.5,1;0.2,0.1,2];
ax = gca;for i = 1 : size(data,2)x_data(:, i) = b(i).XEndPoints';
end
for i=1:3
errorbar(x_data(:,i),data(:,i),erro_data(:,i),'LineStyle', 'none','Color','k' ,'LineWidth', 2,'CapSize',18)
endax.YLim=[0,30];
for i =1:3
b(i).FaceColor = color(i,:);
b(i).EdgeColor= 'k';
b(i).LineWidth=1.5;
end
legend('data1','data2','data3')
ax.XTickLabels ={'CT', 'WT', 'RWD'};
set(gca,"FontName","Times New Roman","FontSize",14,"LineWidth",2)
box off
堆疊柱狀圖
clc;clear;close all;
color=[0.501960784313726,0.670588235294118,0.737254901960784;0.996078431372549,0.827450980392157,0.482352941176471;...0.737254901960784,0.490196078431373,0.709803921568628];
data=[1.5,2.5,1;18,6,1;6,1,1;6,1,1];
erro_data=[1,1,3;6,0.5,1;0.2,0.1,2;0.2,0.1,2];
b=bar(data,0.6,'stacked');
hold on
for i = 1 : size(data,2)x_data(:, i) = b(i).XEndPoints';
end
errorbar([],[cumsum(data')]',[],erro_data,'LineStyle', 'none','Color', [0,0,0], 'LineWidth', 1,'CapSize',18)
hold on
ax = gca;
for i =1:3
b(i).FaceColor = color(i,:);
b(i).LineWidth=1;
end
ax.YLim=[0,30];
%x軸范圍
% %x軸標簽
ax.XTickLabels ={'CT', 'WT', 'RWD','RA'};
ax.YTick = [0,10,20,30];
ax.YTickLabels={'0', '10', '20','30'} ;
%y軸范圍
box off
%坐標軸字體和大小
ylabel('index')
set(gca,"FontName","Times New Roman","FontSize",14,"LineWidth",2)
title({'My';'Picture' },"FontName","Times New Roman","FontSize",14,"LineWidth",2);
legend('Ana','Oth','Met')
legend('boxoff') %圖例框消失
堆疊柱狀圖2
clc;clear;close all;
color=[0.247058823529412,0.305882352941177,0.560784313725490;0.466666666666667,...0.470588235294118,0.682352941176471;0.686274509803922,0.737254901960784,...0.874509803921569;0.858823529411765,0.901960784313726,0.956862745098039];
data=[19.3,31.6,34.4,14.6;43.4,32.7,16.4,7.5;31.5,30.2,25,13.3;37.1,26.2,28,8.3];b=bar(data,0.6,'stacked');
hold on
% % errorbar([],[cumsum(data')]',[],erro_data,'LineStyle', 'none','Color', [0,0,0], 'LineWidth', 1,'CapSize',18)
% hold on
ax = gca;
for i =1:4
b(i).FaceColor = color(i,:);
b(i).EdgeColor= color(i,:);
b(i).LineWidth=1;
end
ax.YLim=[0,100];
%x軸范圍
% %x軸標簽
ax.XTickLabels ={'White', 'Black', 'Hispanic',' American'};
ax.YTick = [0:20:100];
ax.YTickLabels={'0', '20', '40','60','80','100'} ;
%y軸范圍
box off
%坐標軸字體和大小
ylabel('index')
set(gca,"FontName","Times New Roman","FontSize",14,"LineWidth",2)
title({'My';'Picture' },"FontName","Times New Roman","FontSize",14,"LineWidth",2);
三維柱狀圖
clc;clear;close all
color=[0.501960784313726,0.670588235294118,0.737254901960784;0.996078431372549,0.827450980392157,0.482352941176471;...0.737254901960784,0.490196078431373,0.709803921568628];
data=[19.3,31.6,34.4,14.6;43.4,32.7,16.4,7.5;31.5,30.2,25,13.3]';
h=bar3(data);
for i=1:3h(1, i).FaceColor=color(i,:);
end
xticklabels({'auto','b','c'})
yticklabels({'b','d','e'})
hold on
title('title')
zlabel('誤差')
ax = gca;
set(gca,"FontSize",12,"LineWidth",1.5)
box off
%%
clc;clear;close all
color=[ 0.541176470588235 0.694117647058824 0.4862745098039220.909803921568627 0.772549019607843 0.4196078431372550.952941176470588 0.635294117647059 0.388235294117647];data=[19.3,31.6,34.4,14.6;43.4,32.7,16.4,7.5;31.5,30.2,25,13.3]';
h=bar3(data,0.7);
for i=1:3h(1, i).FaceColor=color(i,:);
end
xticklabels({'auto','b','c'})
yticklabels({'b','d','e'})
hold on
title('title')
zlabel('誤差')
ax = gca;
set(gca,"FontSize",12,"LineWidth",1.5)
box off
完整復現代碼
另外國獎復現代碼還包括:
- 折線圖
- 多根折線圖
- 帶誤差棒的折線圖
- 單個誤差帶的折線圖
- 多個帶誤差帶的折線圖
- 箱線圖
- 熱圖
- 矩陣散點圖
- 三維圖
- 雙軸圖