文章目录
- 引言
- 三维图
- 双轴图
- 三维散点图
- 完整复现代码
引言
数模比赛的绘图是非常重要得,这篇文章给大家分享我自己复现国奖优秀论文的代码,基于Matalab来实现,可以直接运行出图。之前的文章也有分享【折线图、柱状图、箱线图、热图】的绘制,这篇文章主要分享【三维图、地图】。
【数学建模美赛速成系列】O奖论文绘图复现代码
【数学建模国奖速成系列】优秀论文绘图复现代码(二)
【数学建模国奖速成系列】优秀论文绘图复现代码(三)
三维图
%% 三维图
clc;clear;close all;
load('color_cell1.mat')
color_all=color_cell1{1,3};
load('三维曲面图测试数据.mat')num=100; %插值数据
test_data_x=a(:,1);
test_data_y=a(:,2);
test_data_z=a(:,3);
test_data_C=a(:,4);test_data_x1=linspace(min(test_data_x),max(test_data_x),num);
test_data_y1=linspace(min(test_data_y),max(test_data_y),num);[test_data_x1,test_data_y1]=meshgrid(test_data_x1,test_data_y1);
% 插值
test_data_z1=griddata(test_data_x,test_data_y,test_data_z,test_data_x1,test_data_y1,'v4');
test_data_C1=griddata(test_data_x,test_data_y,test_data_C,test_data_x1,test_data_y1,'v4');
mesh(test_data_x1,test_data_y1,test_data_z1,test_data_C1)
%surf 填充,推荐当数据少的时候
hold on
xlabel('x')
ylabel('y')
zlabel('z')
color_all=color_cell1{1,1};
colormap(color_all)%%
clc;clear;close all;
load('color_cell1.mat')
color_all=color_cell1{1,3};
load('三维曲面图测试数据.mat')num=30; %插值数据
test_data_x=a(:,1);
test_data_y=a(:,2);
test_data_z=a(:,3);
test_data_C=a(:,4);test_data_x1=linspace(min(test_data_x),max(test_data_x),num);
test_data_y1=linspace(min(test_data_y),max(test_data_y),num);[test_data_x1,test_data_y1]=meshgrid(test_data_x1,test_data_y1);
% 插值
test_data_z1=griddata(test_data_x,test_data_y,test_data_z,test_data_x1,test_data_y1,'v4');
test_data_C1=griddata(test_data_x,test_data_y,test_data_C,test_data_x1,test_data_y1,'v4');
% surf(test_data_z1)
sc=surfc(test_data_x1,test_data_y1,test_data_z1,'FaceAlpha',0.9,'EdgeColor','none');
sc(2).FaceColor='auto';
sc(2).EdgeColor='none';
sc(2).ZLocation=min(min(test_data_z1))-0.3*abs(max(max(test_data_z1))-min(min(test_data_z1)));
sc(2).FaceAlpha=0.8;
hold on
xlabel('x')
ylabel('y')
zlabel('z')
color_all=color_cell1{1,1};
colormap(color_all)
colorbar
%%
clc;clear;close all;
load('color_cell1.mat')
color_all=color_cell1{1,3};
load('三维曲面图测试数据.mat')num=100; %插值数据
test_data_x=a(:,1);
test_data_y=a(:,2);
test_data_z=a(:,3);
test_data_C=a(:,4);test_data_x1=linspace(min(test_data_x),max(test_data_x),num);
test_data_y1=linspace(min(test_data_y),max(test_data_y),num);[test_data_x1,test_data_y1]=meshgrid(test_data_x1,test_data_y1);
% 插值
test_data_z1=griddata(test_data_x,test_data_y,test_data_z,test_data_x1,test_data_y1,'v4');
test_data_C1=griddata(test_data_x,test_data_y,test_data_C,test_data_x1,test_data_y1,'v4');
surfc(test_data_x1,test_data_y1,test_data_z1,test_data_C1,'EdgeColor','none')ax=gca;
light
material dull
ax.Projection='perspective';
%surf 填充,推荐当数据少的时候
hold on
% imagesc(test_data_z1)
% hold on
xlabel('x')
ylabel('y')
zlabel('z')
color_all=color_cell1{1,2};
colormap(color_all)
% surf(Z)
% hold on
% imagesc(Z)
%%
clc;clear;close all
a=peaks;
figure
map=mycolormappm(a);
colormap(map)
sc=surfc(a,'FaceAlpha',0.5,'EdgeColor','none');
zlim([-3 11])
sc(2).FaceColor='auto';
sc(2).EdgeColor='none';
sc(2).ZLocation='zmax';
sc(2).FaceAlpha=0.9;
%print('hhh','-dpng','-r400')
双轴图
%% 双轴图
clc;clear;close all
load('color_list.mat')
load('折线图测试数据.mat')
%
color_index=[1,3,4,7,8,9]; %颜色选取
fu={'-*','-^','-o','-d','-p'}; %符号
color_set=color_list(color_index,:);figure('Position', [300 100 800 400]);
yyaxis left;
set(gca,'ycolor',color_set(1,:));
plot(data_test4(1,:),fu{1,5},'LineWidth',2,'Color',color_set(1,:))yyaxis right;
set(gca,'ycolor',color_set(2,:));plot(data_test4(2,:),fu{1,4},'LineWidth',2,'Color',color_set(2,:))
set(gca,"FontSize",11,"LineWidth",1.2)xlabel('times')
ylabel('values')
title('title')
box off
legend('object1','object2')
legend Box off
set(gca,"FontName","Times New Roman","FontSize",13,"LineWidth",1.2)
三维散点图
%% 三维散点图
size_num=60;
X = 1:size_num;
Y = randperm(size_num);
Z = randperm(size_num);
ZF = randperm(size_num)*30;
% 导入所有颜色矩阵
load('color_cell1.mat')
mycolor1=color_cell1{1,1}(1:6:360,:);
% 开始绘制散点图
figure('color',[1 1 1],'Position',[200,100,600,500]);
for i=1:4ax1 = subplot(2,2,i);X = 1:size_num;Y = randperm(size_num);Z = randperm(size_num);ZF = randperm(size_num)*30;scatter3(X,Y,Z,ZF,mycolor1,'.');colormap(ax1,mycolor1);set(gca,'Linewidth',0.9);xlabel('X');ylabel('Y');zlabel('Z');title('三维散点');hold on
end
完整复现代码
另外国奖复现代码还包括:
- 折线图
- 多根折线图
- 带误差棒的折线图
- 单个误差带的折线图
- 多个带误差带的折线图
- 箱线图
- 热图
- 矩阵散点图
- 三维图
- 双轴图