MATLAB--数学建模作图大全及代码说明

article/2025/9/16 17:12:59

目录

1、二维曲线

2、二维渐变图

3、二维散点图

 4、条形图

5、填充图

6、多Y轴图

7、三维曲线图

8、三维散点图

9、三维伪彩图

10、裁剪伪彩图

11、等高线图

12、三维等高线图

13、等高线填充图

14、三维矢量场图

15、伪彩图+投影图

16、热图

17、分子模型图

18、分形图


1、二维曲线

二维曲线算是最最常见的一种曲线了,它能反应两个变量的因果关系。

clear;
clc;
close all;
x=linspace(1,200,100); %均匀生成数字1-200,共计100个
y1=log(x)+1;  %生成函数y=log(x)+1
y2=log(x)+2;  %生成函数y=log(x)+2
figure;
plot(x,y1); %作图 y=log(x)+1
hold on
plot(x,y2,'LineWidth',2); %作图 y=log(x)+2,LineWidth指线性的宽度,粗细尺寸2
hold off %关闭多图共存在一个窗口上
legend('y1','y2'); %生成图例y1和y2

 

2、二维渐变图

用不同的颜色、数据点大小表征不同数值,更加直观。

x=linspace(0,3*pi,200);
y=cos(x)+rand(1,200); %随机生成1*200,位于[0,1]的数字
sz=25;%尺寸为25
c=linspace(1,10,length(x));
scatter(x,y,sz,c,'filled')

3、二维散点图

常用来比较理论数据和实验数据的趋势关系。

figure;
x=linspace(1,200,100)
y1=log(x)+1;
y3=y1+rand(1,100)-0.5;
plot(x,y1,'LineWidth',2,'Color',[0.21,0.21,0.67]);
hold on;
%设置数据点的型状、数据点的填充颜色、数据点的轮廓颜色
plot(x,y3,'o','LineWidth',2,'Color',[0.46,0.63,0.90],'MarkerFaceColor',[0.35,0.90,0.89],'MarkerEdgeColor',[0.18,0.62,0.17]);
hold off;

 4、条形图

A=[60.689;87.714;143.1;267.9515];
C=[127.5;160.4;231.9;400.2];
B=C-A;
D=[A,B,C];
bar1=bar([2:5:17],A,'BarWidth',0.2,'FaceColor','k');
hold on;
bar2=bar([3:5:18],B,'BarWidth',0.2,'FaceColor',[0.5 0.5 0.5]);
hold on;
bar3=bar([4:5:19],C,'BarWidth',0.2,'FaceColor','w');
ylabel('耗时/s');
xlabel('GMM阶数');
legend('训练耗时','测试耗时','总耗时');
labelID={'8阶','16阶','32阶','64阶'};
set(gca,'XTick',3:5:20);

5、填充图

x=0.4:0.1:2*pi;
y1=sin(2*x);
y2=sin(x);
%确定有y1和y2的上下边界
maxY=max([y1;y2]);
minY=min([y1;y2]);
%确定填充多边形,按照顺时针方向来确定点
%fliplr实现左右翻转
xFill=[x,fliplr(x)];
yFill=[maxY,fliplr(minY)];
figure;
fill(xFill,yFill,[0.21,0.21,0.67]);
hold on;
%描绘轮廓线
plot(x,y1,'k','LineWidth',2);
plot(x,y2,'k','LineWidth',2);
hold off;

6、多Y轴图

figure;
load('accidents.mat','hwydata');
ind=1:51;
drivers=hwydata(:,5);
yyaxis left;
scatter(ind,drivers,'LineWidth',2);
title('Highway Data');
xlabel('States');
ylabel('Licensed Drivers(thousands)');
pop=hwydata(:,7);
yyaxis right;
scatter(ind,pop,'LineWidth',2);
ylabel('Vehicle Miles Traveled(millions)');

7、三维曲线图

figure;
t=0:pi/20:10*pi;
xt=sin(t);
yt=cos(t);
plot3(xt,yt,t,'-o','Color','b','MarkerSize',10);

figure;
x=-20:10:20;
y=0:100;
%随便生成的五组数据,也就是目标图上的5条曲线数据
z=zeros(5,101);
z(1,1:10:end)=linspace(1,10,11);
z(2,1:10:end)=linspace(1,20,11);
z(3,1:10:end)=linspace(1,5,11);
z(4,5:10:end)=linspace(1,10,10);
z(5,80:2:end)=linspace(1,5,11);
for i=1:5%x方向每条曲线都是一个值,重复y的长度这么多次xx=x(i)*ones(1,101);%z方向的值,每次取一条zz=z(i,:);%plot3在xyz空间绘制曲线,保证xyz的长度一致即可plot3(xx,y,zz,'LineWidth',2);hold on
end
hold off;
legend('line1','line2','line3','line4','line5');

8、三维散点图

figure;
[X,Y,Z]=sphere(16);
x=[0.5*X(:);0.75*X(:);X(:)];
y=[0.5*Y(:);0.75*Y(:);Y(:)];
z=[0.5*Z(:);0.75*Z(:);Z(:)];
S=repmat([70,50,20],numel(X),1);
C=repmat([1,2,3],numel(X),1);
s=S(:);
c=C(:);
h=scatter3(x,y,z,s,c);
h.MarkerFaceColor=[0 0.5 0.5];

9、三维伪彩图

[x,y,z]=peaks(30);
figure;
plot1=subplot(1,2,1);
surf(x,y,z);
%获取第一幅图的colormap,默认为parula
plot2=subplot(1,2,2);
surf(x,y,z);
%下面设置的是第二幅图的颜色
colormap(hot);
%设置第一幅图颜色显示为parula

10、裁剪伪彩图

figure;
n=300;
[x,y,z]=peaks(n);
subplot(2,2 ,[1,3]);
surf(x,y,z) ;
shading interp;
view(0,90);
for i=1:nfor j=1:nif x(i,j)^2+2*y(i,j)^2>6&&2*x(i,j)^2+y(i,j)^2<6z (i,j)=NaN;endend
end
subplot(2,2,2);
surf(x,y,z);
shading interp;
view(0,90);
subplot (2,2,4);
surf(x,y,z);
shading interp

11、等高线图

figure;
[X,Y,Z]=peaks;
subplot(2,2,1);
contour(X,Y,Z,20,'LineWidth',2);
subplot(2,2,2);
contour(X,Y,Z,'--','LineWidth', 2);
subplot(2,2,3);
v=[1,1];
contour(X,Y,Z,v,'LineWidth',2);
x = -2:0.2:2 ;
y = -2 :0.2:3 ;
[X,Y]=meshgrid(x,y);
Z=X.*exp(-X.^2 -Y.^2 );
subplot(2,2,4);
contour(X,Y,Z,'ShowText','on','LineWidth',2);

12、三维等高线图

figure('Position',[0,0,900,400]);
subplot(1,3,1);
[X,Y,Z]=sphere(50);
contour3(X,Y,Z,'LineWidth',2);
[X,Y]=meshgrid(-2:0.25:2);
Z=X.*exp(-X.^2-Y.^2);
subplot(1,3,2);
contour3(X,Y,Z,[-0.2 -0.1 0.1 0.2],'ShowText','on','LineWidth',2);
[X,Y,Z]=peaks;
subplot(1,3,3);
contour3(X,Y,Z,[2 2],'LineWidth',2);

13、等高线填充图

figure;
subplot(2,2,1);
[X,Y,Z]=peaks(5);
contour(X,Y,Z);
subplot(2,2,2);
contourf(X,Y,Z,'--');
%限定范围
subplot(2,2,3);
contourf(X,Y,Z,[2 3],'ShowText','on');
subplot(2,2,4);
contourf(X,Y,Z,[2 2]);

14、三维矢量场图

figure;
[X,Y,Z]=peaks(30);
%矢量场,曲面法线
[U,V,W]=surfnorm(X,Y,Z);
%箭头长度、颜色
quiver3(X,Y,Z,U,V,W,0.5,'r');
hold on;
surf(X,Y,Z);
xlim([-3,3]);
ylim([-3,3.2]);
shading interp;
hold off;
view(0,90);

15、伪彩图+投影图

clear;clc;close all;
x=linspace(-3,3,30);
y=linspace(-4,4,40);
[X,Y]=meshgrid(x,y);
Z=peaks(X,Y);
Z(5:10,15:20)=0;
z1=max(Z);
z2=max(Z,[],2);
figure;
subplot(3,3,[1,2]);
plot(x,z1,'LineWidth',2);
subplot(3 ,3 ,[6,9]);
plot(z2,y,'LineWidth',2);
subplot(3,3,[4,5,7,8]);
surf(x,y,Z);
xlim([-3,3]); 
ylim([-4,4]);
view(0,90);
shading interp; %平滑图像

16、热图

clear;
clc;
z=rand(50);
z(z>=0.0&z<0.6)=0.5;
z(z>=0.6&z<0.8)=0.7;
z(z>=0.8&z<=1)=0.9;
for i=1:30z(randi(50,1,1):end,i)=nan;
endfor i=31:50z(30+randi(20,1,1):end,i)=nan;
end
z(20:25,40:45)=nan;
figure;
%ax=surf(z);
ax=pcolor(z);
view(0,90);
ax.EdgeColor=[1 1 1];

17、分子模型图

clear;
clc;
%球面的坐标信息,为了看起来平滑一点,给到100
[x,y,z]=sphere(100);
%C大小
C=10;
%H大小
H=5;
figure;
%大球
surf(C*x,C*y,C*z,'FaceColor','red','EdgeColor','none');
hold on;
%四个小球,都偏离一点位置,准确的位置需要计算,这里演示一个大概位置
surf(H*x ,H*y,H*z+10,'FaceColor','blue','EdgeColor','none') ;
surf(H*x+10,H*y,H*z-3,'FaceColor','blue','EdgeColor','none');
surf(H*x-4,H*y-10,H*z-3,'FaceColor','blue','EdgeColor','none');
surf(H*x-4,H*y+10,H*z-3,'FaceColor','blue','EdgeColor','none');
%坐标轴设置
axis equal off;
%光源,看起来更有立体感
light
%lighting none,关闭光照

 

18、分形图

clear;
%不同的参数有不同的图形
a=1.7;
b=1.7;
c=0.6;
d=1.2;
%a=1.5;b=-1.8;c=1.6;d=0.9;
x=0;y=0;
n=100000;
kx=zeros(1,n);
ky=zeros(1,n);
%迭代循环
for i=1:ntempx=sin(a*y)+c*cos(a*x);tempy=sin(b*x)+d*cos(b*y);%存入数组kx(i)=tempx;ky(i)=tempy;
%重新赋值x,y 
x=tempx;
y=tempy;
end
scatter(kx,ky,0.1,'green');

 scatter函数用法

●scatter( x ,y )在向量 x和y指定的位置创建一个包含圆形标记的散点图。

●要绘制一组坐标,请将 x和y指定为等长向量。

●要在同一组坐标区上绘制多组坐标,请将 x或 y中的至少一个指定为矩阵。

●s c a tt e r( x ,y ,s z )指定圆大小。要对所有圆使用相同的大小,请将sz指定为标量。要绘制不同大小的每个圆,请将 s z指定为向量或矩阵。

●scatter(x,y,sz,c)指定圆颜色。您可以为所有圆指定一种颜色,也可以更改颜色。例如,您可以通过将c指定为'red '来绘制所有红色圆。

●scatter( _ _ _ ,'f ille d ')填充圆。可以将'fille d '选项与前面语法中的任何输入参数组合一起使用。


http://chatgpt.dhexx.cn/article/CXCh89F2.shtml

相关文章

如何查询Opencv的版本

环境&#xff1a;Win10 方法&#xff1a; 参考文章上写的很详细&#xff0c;在这里重新编辑一下&#xff0c;保存下来&#xff1a; 1、找到OpenCV的安装主文件夹&#xff0c;在主文件夹中找到“build”文件夹。 2、进入build文件夹以后&#xff0c;在文件夹中找到名为“Ope…

Linux查看opencv 版本

命令如下&#xff1a; [plain] view plain copy print ? pkg-config --modversion opencv 库文件一般放在&#xff1a; /usr/local/lib &#xff08;PS&#xff0c;系统装的OpenCV版本太多&#xff0c;查找也让人头疼&#xff09; 头文件一般在&#xff1a; /usr/local/inc…

ubuntu系统下如何查看opencv版本

打开终端&#xff0c;在终端输入&#xff1a; pkg-config --modversion opencv 可以看出&#xff0c;我安装的是opencv 2.4.13版本的。

在pycharm中查看opencv版本

import cv2 print(cv2.__version__)运行后如下图为自己各自安装的版本&#xff1a;

linux下查看opencv版本

直接使用命令 pkg-config --modversion opencv

opencv查看版本路径

1、查看ubuntu下的OpenCV安装版本&#xff1a; pkg-config opencv --modversion 2、查看ubuntu的opencv安装路径&#xff1a; sudo find / -iname "*opencv*" 在全盘上不区分大小写&#xff0c;搜索带有关键字opencv的所有文件及文件夹都会输出到终端&#xff0c;如…

Windows查看OpenCV版本

打开命令提示符 winr 键打开运行窗口&#xff0c;输入cmd&#xff0c;即可看到弹出的命令提示符窗口输入指令 python import cv2 cv2.__version__得到结果

http 请求 返回状态码 405 的问题

状态码为405表示请求的方式不对&#xff0c; 请求的方式有get、post、head、put…… 常用的为post和get。 代码里面我刚刚开始的时候使用的是HttpPost发的请求&#xff0c;另外一边呢&#xff0c;刚刚开始的时候只有一个get请求在那等着呢。 等我看到405之后&#xff0c;哦&…

HTTP状态 405 - 方法不允许

错误描述&#xff1a; HTTP状态 405 - 方法不允许 类型 状态报告 消息 Request method ‘GET’ not supported 描述 请求行中接收的方法由源服务器知道&#xff0c;但目标资源不支持 此时的原因是请求类型错误&#xff0c;网页是get请求&#xff0c;但是实际上是post请求 解…

HTTP 405 Method Not Allowed问题的解决

项目中在提交表单时&#xff0c;提示“HTTP 405”错误——“Method Not Allowed” 这里显示的是&#xff0c;方法不被允许。也许经验丰富的开发人员一眼就明了当前的问题。 从字面上的意思理解&#xff0c;很显然是提交方法的类型错误&#xff0c;要么是以GET方式向POST接口提…

http请求返回405 (Method Not Allowed)

一、问题描述 使用post请求json文件中的数据时&#xff0c;返回报错405(Method Not Allowed) 二、解决方法 由post请求改为get请求&#xff0c;请求静态资源时用get请求&#xff1b; 原因&#xff1a; 使用post请求并且发送的URL是一个具体的资源的时候例如JSON文件, 网站解…

http 301、302、304、400、405、415状态码解释

301 moved permanently、302 found、303 see other 301/302/303都表示重定向&#xff0c;所以放在一起讲解。 301表示永久重定向&#xff08;301 moved permanently&#xff09;&#xff0c;表示请求的资源分配了新url&#xff0c;以后应使用新url。 302表示临时性重定向&am…

http 请求405 错误

问题 postman模拟请求springboot项目&#xff0c;显示台报错 详细问题 解决 由于springboot接口要求以post方式发送请求 对于postman模拟请求应当以post方式发送 原因 405错误表示方法不允许&#xff0c; 多数情况下&#xff0c; 405错误是由于GET,POST,DELETE,PUT等方法…

页面http 405错误排查

问题&#xff1a; 这两天pre环境前端发版后&#xff0c;pre就访问不到了&#xff0c;页面会报405错误 分析 HTTP 错误 405 405 不允许此方法 一般是方法是GET你用POST请求了 对于请求所标识的资源&#xff0c;不允许使用请求行中所指定的方法。请确保为所请求的资源设置了正确的…

Http405错误,方法类型也没有错,解决办法

405错误不一定是GET,POST,DELETE,PUT等方法类型不一致才可能导致的&#xff0c;也可能是URL的问题。 比如我的URL为http://localhost:8080/authority/list.action 由于web.xml设置了*.action的后缀过滤&#xff0c;这时如果我用SpringMVC的RequestMapping再去匹配这个action后缀…

Http状态405-方法不允许

Http状态405-方法不允许 1.问题与解决方法 错误描述&#xff1a;新创建一个简单的servlet项目。代码如下图&#xff1a; 启动Tomcat 浏览器输入项目正确路径。浏览器显示405错误。如下图&#xff1a; 解决方法&#xff1a;删除下列代码。 super.doGet(req.resp); super.doPo…

http请求 405错误

http请求 405错误 方法不被允许 (Method not allowed) 405错误常常伴随着POST请求&#xff0c;所有有人会告诉你这些&#xff1a; 但是时候他并不能解决你的问题。 所以我说一点不一样的。 假如你有一个user类&#xff0c;里面有两个属性userName,password 数据类型分别为int…

关于HTTP请求出现405状态码 Method not allowed的解决办法

如图所示&#xff1a; httppost请求目标网站会出现405 状态码&#xff0c;是因为 Apache、IIS、Nginx等绝大多数web服务器&#xff0c;都不允许静态文件响应POST请求。 所以将post请求改为get请求即可。

JS变量声明·提升·函数提升

变量声明 声明变量的关键字 在ES6之前&#xff0c;声明变量的关键字只有var&#xff0c;作用域只有&#xff1a;全局作用域和函数作用域&#xff1b; 到了ES6&#xff0c;引入let,const两个关键字声明变量和常量&#xff0c;同时引入新的作用域&#xff1a;块级作用域。 声明变…

js的变量提升理解

先来看一段代码 showName() console.log(myname) var myname 极客时间 function showName() {console.log(函数showName被执行); }思考一下它的输出 为什么myname在声明之前就可以输出到控制台>这就是因为变量提升 上面的代码等价于下边的代码 /* * 变量提升部分 */ //…