数学建模之matlab作图汇总(共19种)
文章目录
- 1.二维曲线
- 2.二维散点图
- 3.二维渐变图
- 4.条形图
- 5.填充图
- 6.多y轴图
- 7.二维场图
- 8.三维曲线图
- 9.三维散点图
- 10.三维伪彩图
- 11.裁剪伪彩图
- 12.等高线图
- 13.三维等高线图
- 14.等高线填充图
- 15.三维矢量场图
- 16.伪彩图+投影图
- 17.热图
- 18.分子模型图
- 19.分形图(装逼用)
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
matlab中
plot(x,y,'color',se,'LineWidth',1.5) %'color',se——color是颜色,se是颜色变量,如se='r' %r(红)、g(绿)、b(蓝)、c(蓝绿)、m(紫红)、y(黄)、k(黑)、w(白) %LineWidth指线型的宽度,粗细尺寸1.5
2.二维散点图
figure; 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;
matlab中
%MarkerFaceColor用于设置内部填充颜色 %MarkerEdgeColor用于设置外部边框颜色
3.二维渐变图
x=linspace(0,3*pi,200);%生成200个0~3pi的数据 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');
matlab中
%scatter函数用法 %scatter(x,y)在向量 x 和 y 指定的位置创建一个包含圆形标记的散点图。 %要绘制一组坐标,请将 x 和 y 指定为等长向量。 %要在同一组坐标区上绘制多组坐标,请将 x 或 y 中的至少一个指定为矩阵。 %scatter (x,y,sz) 指定圆大小。要对所有圆使用相同的大小,请将 sz 指定为标量。要绘制不同大小的每个圆,请将 sz 指定为向量或矩阵。 %scatter (x,y,sz,c) 指定圆颜色。您可以为所有圆指定一种颜色,也可以更改颜色。例如,您可以通过将c指定为'red'来绘制所有红色圆。 %scatter(___,'filled')填充圆。可以将'filled' 选项与前面语法中的任何输入参数组合一起使用。
scatter函数用法
%创建散点图 x=linspace(0,3*pi,200); y=cos(x)+rand(1,200); scatter(x,y) %改变圆圈大小 %使用大小不同的圆圈创建一个散点图。 %以平方磅为单位指定大小 x=linspace(0,3*pi,200); y=cos(x)+rand(1,200); sz=linspace(1,100,200); scatter(x,y,sz) %改变圆圈颜色 %创建一个散点图并改变圆圈的颜色 x=linspace(0,3*pi,200); y=cos(x)+rand(1,200); c=linspace(1,10,length(x)); scatter(x,y,[],c) %填充标记 %创建一个散点图并填充标记。scatter使用标记边的颜色填充每个标记 x=linspace(0,3*pi,200);%生成200个0~3pi的数据 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');
4.条形图
A=[60.689;87.714;143.1;267.9515];%4×1的数据 C=[127.5;160.4;231.9;400.2];%4×1的数据 B=C-A;%4×1的数据%4×1的数据 D=[A,B,C];%4×3的数据 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); set(gca,'xTickLabel',labelID)
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);%所有行第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.二维场图
%直接把 streamline 函数的帮助文档 demo 拷贝过来 [x,y] = meshgrid(0:0.1:1,0:0.1:1);%生成格网采样点 u=x;%矢量 v=-y;%矢量 startx =0.1:0.1:0.9; starty =ones(size(startx));%生成和startx数目一致的全是1的一组数据 %需要获取所有流线的属性 figure; quiver(x,y,u,v);%该函数使用箭头来直观的显示矢量场小箭头来表示以该点为起点的向量(u,v),在x,y的坐标轴中 streamline(x,y,u,v, startx, starty);%绘制流线图;quiver是定义矢量,streamline是绘制;
8.三维曲线图
figure; t=0:pi/20:10*pi; xt=sin(t); yt=cos(t); plot3(xt,yt,t,'-o','Color','b','MarkerSize',10);%作三维图,'-o'即作图为圈,且将其连接起来;'MarkerSize'代表圈的大小
figure; x=-20:10:20; y=0:100; % 随便生成的 5 组数据,也就是目标图上的 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方向每条曲线都是一个值,重复的长度这么多次 xx =x(i)*ones(1,101); %z方向的值,每次取一条 zz = z(i,:); % plot3 在 xyz 空间绘制曲线,保证z度一致即可 plot3(xx,y,zz,'LineWidth', 2); hold on end hold off legend('linel','line2', 'line3', 'line4', 'line5');
9.三维散点图
figure; [X,Y,Z] = sphere(16);%绘制一个16×16的球面,把点的坐标赋值给[X,Y,Z] 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);%repmat复制,numel(X)计算X的元素,把[70,50,20]复制成numel(X)行,1列的一组数 C = repmat([1, 2,3], numel(X), 1); s = S(:); c = C(:);%size(c)=C行*列 h = scatter3(x,y,z,s,c);%生成三维散点图,s代表尺寸,c代表颜色 h.MarkerFaceColor =[0 0.5 0.5];%填充的颜色
x = linspace(1,200,100); y1 = log(x) + 1; y2 = log(x) + 2; y3 = y1 + rand(1,100) - 0.5; figure; scatter3(x, y2, y3, x, x, 'filled');%'filled',圈是实体的
10.三维伪彩图
[x,y,z] = peaks(30);%peaks函数 figure; plot1 = subplot(1,2,1);%subplot生成1行2列的图形窗口,第一个图 surf(x,y,z); %获取第一幅图的 colormap,默认为 parula plot2 = subplot(1,2,2);%subplot生成1行2列的图形窗口,第二个图 surf(x,y,z); %下面设置的是第二幅图的颜色 colormap(hot); %或者设置图颜色显示为 parula %colormap(parula);
%一个坐标轴 figure; h1 = surf(x, y, z); hold on h2 = surf(x, y, z + 5); hold off colormap(hot);
11.裁剪伪彩图
figure; n=300; [x,y,z] = peaks(n); subplot(2,2,[1,3])%将1,3图合并 surf(x,y,z); shading interp%渲染 view(0,90) for i= 1:n for j = 1:n if x(i, j)^2 +2*y(i, j)^2 > 6 &&2*x(i,j)^2 + y(i, j)^2 =0.0&z=0.6&z=0.8&z
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。