【数学建模国奖速成系列】优秀论文绘图复现代码(二)
文章目录
- 引言
- 柱状图
- 横向柱状图
- 分组柱状图
- 堆叠柱状图
- 堆叠柱状图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
完整复现代码
完整代码的获取请看文章最后~
另外国奖复现代码还包括:
- 折线图
- 多根折线图
- 带误差棒的折线图
- 单个误差带的折线图
- 多个带误差带的折线图
- 箱线图
- 热图
- 矩阵散点图
- 三维图
- 双轴图