【Matlab】绘图代码模板

news2024/11/15 10:16:06

matlab绘图代码模板

  • matlab官方帮助文档
  • 平面基本绘图(2D):
    • 单曲线图
    • 多曲线图
  • 官网模板
    • 单曲线图
    • 条形图
    • 误差条形图
    • 极坐标图
    • 针状图
    • 散点图
    • 3D等高线图
    • 热图
  • 进阶版绘图
    • 好看的折线图
    • 柱状图
    • 统计直方图
    • 离散数据杆状图
    • 二维曲线
    • 二维散点图
    • 二维渐变图
    • 条形图
    • 填充图
    • 多Y轴图
    • 二维场图
    • 三维曲线图
    • 三维散点图
    • 三维伪彩图
    • 裁剪伪彩图
    • 等高线图
    • 三维等高线图
    • 等高线填充图
    • 三维矢量场图
    • 伪彩图+投影图
    • 热图
    • 分子模型图
    • 分形图
    • MATLAB轻松绘制地图路线——已知及未知坐标

matlab官方帮助文档

https://ww2.mathworks.cn/help/matlab/preprocessing-data.html?s_tid=CRUX_lftnav

平面基本绘图(2D):

  • plot的指令格式:plot(x, y, '颜色+曲线格式+曲线符号')
    • x: x轴变量
    • y: y轴变量

颜色:

plot指令  曲线颜色
b         蓝色 (Blue)
c         青蓝色 (Cyan)
g         绿色 (Green)
k         黑色 (Black)
m         紫红色 (Magenta)
r         红色 (Red)
w         白色 (White)
y         黄色 (Yellow)

曲线格式:

plot指令  曲线格式
-         实线 (默认值)
--        虚线
:         点线
-.        点虚线

曲线符号:

plot指令    曲线符号
○          圆形
+          加号
x          叉号
*          星号
.          点号
^          朝上三角形
v          朝下三角形
>          朝右三角形
<          朝左三角形
square     方形
diamond    菱形
pentagram  五角星形
hexagram   六角星形
none       无符号 (默认值)

单曲线图

% 生成 x 轴的数据,从 0 到 2*pi,共 25 个点
x = linspace(0, 2*pi, 25);
y = sin(x);

% 绘制图像,'k:diamond' 表示使用黑色线条和菱形符号
plot(x, y, 'k:diamond');

xlabel('x轴');
ylabel('y轴');
title('y = sin(x)的图像');

在这里插入图片描述

多曲线图

x = linspace(0, 2*pi, 100); % 在 0 到 2*pi 间等分取 100 个点

% 绘制多条曲线并描点作图
plot(x, sin(x), 'b-', x, cos(x), 'r--', x, sin(x) + cos(x), 'g.');

在这里插入图片描述

设置画图之 x 轴.y 轴范围 axis([xmin, xmax, ymin, ymax])
xmin: x 轴最小值
xmax: x 轴最大值
ymin: y 轴最小值
ymax: y 轴最大值
注: 设置值若为 -inf 或 inf,指的是数据点的最小值和最大值

x = 0:0.1:4*pi; % x向量的起始与结束元素为0及0.1的各元素相差值
y = sin(x);
plot(x, y);
axis([-inf, inf, 0, 1]); % 画出正弦波y轴介于0和1的部分

在这里插入图片描述
以下是转换成Markdown代码格式的内容,使用简体汉字:

改变图轴长宽比:

指令说明
axis normal使用默认长宽比(等于图形长宽比)
axis square长宽比例为1
axis equal长宽比例不变, 但两轴刻度一致
axis equal tight两轴刻度比例一致, 且图轴贴紧图形
axis image两轴刻度比例一致 (适用于影像显示)

改变图轴背景颜色:

指令说明
colordef white图轴背景为白色, 视觉背最为浅灰色
colordef black图轴背景为黑色, 视觉背最为深灰色
colordef none图轴背最为黑色, 视窗背最为黑色

格线与外框:

指令说明
grid on画出格线
grid off取消格线
box on画出图轴的外围长方形
box off取消图轴的外围长方形

加入说明文字: XXX('欲加入之文字')

XXX 可为以下之指令:

指令说明
title图形的标题
xlabelx轴的说明
ylabely轴的说明
zlabelz轴的说明 (适用于立体绘图)
legend罗条曲线的说明
text在图形中加入文字
gtext使用鼠标决定文字的位置

注: text 需指定放置的坐标轴,故使用方法为 text(x轴座标, y轴座标, 欲加入之文字')

% 设置微软雅黑字体为中文显示
set(groot, 'DefaultAxesFontName', 'Microsoft YaHei');

x = 0:0.1:2*pi;
y1 = sin(x);
y2 = exp(-x);
plot(x, y1, '--*r', x, y2, ':ob');
xlabel('t=0 to 2\pi');
ylabel('$\sin(t)$ 和 $e^{-x}$', 'Interpreter', 'latex'); % 使用数学模式的LaTeX表达式显示中文
title('$\sin(t)$ 和 $e^{-x}$ 的函数图像', 'Interpreter', 'latex'); % 使用数学模式的LaTeX表达式显示中文
legend({'$\sin(t)$', '$e^{-x}$'}, 'Interpreter', 'latex'); % 使用数学模式的LaTeX表达式显示中文

% 添加说明文字在图形中的位置
text(1, 0.8, '这是 $\sin(t)$ 的峰值', 'FontName', 'Microsoft YaHei', 'Interpreter', 'latex'); % 添加 x 轴说明文字
text(4, 0.8, '这是 $e^{-x}$ 的衰减', 'FontName', 'Microsoft YaHei', 'Interpreter', 'latex'); % 添加 x 轴说明文字

% 添加箭头指向特定位置
[peak_val_y1, peak_idx_y1] = max(y1);
[decay_val_y2, decay_idx_y2] = max(y2);
annotation('arrow', [peak_idx_y1*0.1/2/pi, peak_idx_y1*0.1/2/pi], [peak_val_y1, 0.6], 'HeadStyle', 'plain'); % 添加指向 sin(t) 峰值的箭头
annotation('arrow', [decay_idx_y2*0.1/2/pi, decay_idx_y2*0.1/2/pi], [decay_val_y2, 0.6], 'HeadStyle', 'plain'); % 添加指向 e^{-x} 峰值的箭头

在这里插入图片描述

官网模板

来源:官方
https://ww2.mathworks.cn/products/matlab/plot-gallery.html#

图:https://blog.csdn.net/weixin_43948357/article/details/89220323

单曲线图

x = 0:0.05:5;
y = sin(x.^2);
figure
plot(x,y)

在这里插入图片描述

条形图

x = -2.9:0.2:2.9;
y = exp(-x.*x);
bar(x,y)

在这里插入图片描述

误差条形图

errorbar 函数用来绘制 x 和 y 值的线图并在每个观察点上叠加垂直误差条。若要指定误差条的大小,需要向 errorbar 函数传递一个额外的输入参数。

x = -2:0.1:2;
y = erf(x);
eb = rand(size(x))/7;
errorbar(x,y,eb)

在这里插入图片描述

极坐标图

polarplot 函数用来绘制 theta 中的角度值(以弧度为单位)对 rho 中的半径值的极坐标图。

theta = 0:0.01:2*pi;
rho = abs(sin(2*theta).*cos(2*theta));
polarplot(theta,rho)

在这里插入图片描述

针状图

stem 函数为每个通过竖线连接到一条公共基线的 x 和 y 值绘制一个标记

x = 0:0.1:4;
y = sin(x.^2).*exp(-x);
stem(x,y)

在这里插入图片描述

散点图

scatter 函数用来绘制 x 和 y 值的散点图。

load patients Height Weight Systolic
scatter(Height,Weight)
xlabel('Height')
ylabel('Weight')

在这里插入图片描述

使用 scatter 函数的可选参数指定标记的大小和颜色。使用 colorbar 函数显示当前坐标区上的色阶。

scatter(Height,Weight,20,Systolic)
xlabel('Height')
ylabel('Weight')
colorbar

在这里插入图片描述

3D等高线图

3D等高线图包含矩阵Z的等高线,其中Z包含在x-y平面上的高度值。

创建数据:

使用辅助函数meshgrid生成3D等高线图所需的数据,数据之间的关系如下:
[x,y,z] = createData();

基本的3D等高线图:

可视化函数z。等高线颜色根据z方向的高度变化而变化。
contour3(x,y,z);


% 生成数据
[x, y, z] = createData();

% 基本的3D等高线图
% 将矩阵Z中的高度值在x-y平面上表示为等高线
contour3(x, y, z);

% 添加标题和坐标轴标签
title('3D Contour Plot');
xlabel('X Axis');
ylabel('Y Axis');
zlabel('Z Axis');

function [x,y,z] = createData()
    [x,y] = meshgrid(-7:0.1:7);
    z = sin(x) + cos(y);
end

在这里插入图片描述
通过将第二个参数传递给contour3函数,您可以指定等高线的数量,从而增加等高线的数量,进而改进可视化效果。同时,您还可以使用“Name-Value”对参数指定等高线的线宽。


% 生成数据
[x, y, z] = createData();

% 基本的3D等高线图
% 将矩阵Z中的高度值在x-y平面上表示为等高线
contour3(x, y, z);

% 添加标题和坐标轴标签
title('3D Contour Plot');
xlabel('X Axis');
ylabel('Y Axis');
zlabel('Z Axis');

% % 自定义等高线细节
contourLevels = 50;
lineWidth = 2;

figure;
[~,c] = contour3(x, y, z, ...
    contourLevels, ...             % 指定等高线的数量
    'LineWidth', lineWidth);       % 指定等高线的线宽


% 更改颜色映射
colormap("cool");    % 指定等高线图的颜色映射为"cool"

function [x,y,z] = createData()
    [x,y] = meshgrid(-7:0.1:7);
    z = sin(x) + cos(y);
end


在这里插入图片描述

% 生成数据
[X, Y, Z, V] = createData();

% 指定等高线的级别并添加颜色条
figure;
lvls = -0.4:0.01:0.4;
c1 = contourslice(X, Y, Z, V, xslice, [], [], lvls);
view(3);
colorbar;
grid on;
% 添加标题和坐标轴标签
title('Contourslice Plot with Custom Contour Levels');
xlabel('X Axis');
ylabel('Y Axis');
zlabel('Z Axis');

% 沿着曲面切片指定等高线
numContours = 20;
[xsurf, ysurf] = meshgrid(-2:0.2:2);
zsurf = xsurf.^2 - ysurf.^2;

figure;
c2 = contourslice(X, Y, Z, V, xsurf, ysurf, zsurf, numContours);
view(3);
grid on;
colorbar;
% 添加标题和坐标轴标签
title('Contourslice Plot Along Surface Slice');
xlabel('X Axis');
ylabel('Y Axis');
zlabel('Z Axis');

% 更改等高线的线宽
for i = 1:length(c2)
    c2(i).LineWidth = 1.5; % 使用点号表示法更改每个Patch对象的线宽
end

% 辅助函数用于生成数据
function [X, Y, Z, V] = createData()
    [X, Y, Z] = meshgrid(-2:.2:2);
    V = X .* exp(-X.^2 - Y.^2 - Z.^2);
end

在这里插入图片描述
在这里插入图片描述

热图

进阶版绘图

好看的折线图

% 第一个子图:A4纸的双栏小图,大小为8cmx5cm
figure(1)
set(gcf,'unit','centimeters','position',[10,10,8,5]) % 设置图形窗口位置和尺寸[左 下 宽 高]

linewidth_line = 1.2;     % 图形线条宽度
markersize = 2.5;         % 图形标记点大小
linewidth_gca = 0.7;      % 横纵坐标轴宽度
fontsize_gca = 7;         % 横纵坐标轴刻度字体大小
fontsize_label = 9;       % 横纵坐标轴字体大小
fontsize_legend = 7;      % 图例字体大小

plot(X1,Y1,'--','linewidth',linewidth_line,'markersize',markersize) % 绘制第一条线
hold on;  % 为了能够将多条线画在同一张画布上,需要使用hold on命令
grid on;  % 添加网格线
plot(X2,Y2,'-d','linewidth',linewidth_line,'markersize',markersize) % 绘制第二条线
xlim([0 10])        % X轴坐标范围
ylim([-2.5 2.5])    % Y轴坐标范围
h = legend('图例1','图例2'); % 图例
set(h,'fontsize',fontsize_legend); % 设置图例字体大小
set(gca,'linewidth',linewidth_gca,'fontsize',fontsize_gca) % 设置横纵坐标轴线宽和刻度字体大小
set(gca,'GridLineStyle','--'); % 设置网格线样式为虚线
xlabel('横轴变量名','fontsize',fontsize_label) % 设置横坐标标签字体大小
ylabel('纵轴变量名','fontsize',fontsize_label) % 设置纵坐标标签字体大小
title('A4双栏小图') % 添加标题

% 第二个子图:A4纸的单栏大图,大小为12cmx7.5cm
figure(2)
set(gcf,'unit','centimeters','position',[10,10,12,7.5]) % 设置图形窗口位置和尺寸[左 下 宽 高]

linewidth_line = 1.5;     % 图形线条宽度
markersize = 4;           % 图形标记点大小
linewidth_gca = 0.7;      % 横纵坐标轴宽度
fontsize_gca = 10;        % 横纵坐标轴刻度字体大小
fontsize_label = 12;      % 横纵坐标轴字体大小
fontsize_legend = 9;      % 图例字体大小

plot(X1,Y1,'--','linewidth',linewidth_line,'markersize',markersize)
hold on; grid on;
plot(X2,Y2,'-d','linewidth',linewidth_line,'markersize',markersize)
xlim([0 10])        % X轴坐标范围
ylim([-2.5 2.5])    % Y轴坐标范围
h = legend('图例1','图例2'); % 图例
set(h,'fontsize',fontsize_legend); % 设置图例字体大小
set(gca,'linewidth',linewidth_gca,'fontsize',fontsize_gca) % 设置横纵坐标轴线宽和刻度字体大小
set(gca,'GridLineStyle','--'); % 设置网格线样式为虚线
xlabel('横轴变量名','fontsize',fontsize_label) % 设置横坐标标签字体大小
ylabel('纵轴变量名','fontsize',fontsize_label) % 设置纵坐标标签字体大小
title('A4单栏大图12,7.5') % 添加标题

% 设置输出保存图片的大小和格式
hfig = figure(2);
figWidth = 12;  % 设置图片宽度
figHeight = 7.5;  % 设置图片高度
set(hfig,'PaperUnits','centimeters'); % 图片尺寸所用单位
set(hfig,'PaperPosition',[0 0 figWidth figHeight]);
fileout = 'test2.'; % 输出图片的文件名
print(hfig,[fileout,'tif'],'-r300','-dtiff'); % 设置图片格式、分辨率

% 第三个子图:A4纸的单栏大图,大小为16cmx10cm
figure(3)
set(gcf,'unit','centimeters','position',[10,10,16,10]) % 设置图形窗口位置和尺寸[左 下 宽 高]

linewidth_line = 1.8;     % 图形线条宽度
markersize = 5;           % 图形标记点大小
linewidth_gca = 0.8;      % 横纵坐标轴宽度
fontsize_gca = 12;        % 横纵坐标轴刻度字体大小
fontsize_label = 14;      % 横纵坐标轴字体大小
fontsize_legend = 10;     % 图例字体大小

plot(X1,Y1,'--','linewidth',linewidth_line,'markersize',markersize)
hold on; grid on;
plot(X2,Y2,'-d','linewidth',linewidth_line,'markersize',markersize)
xlim([0 10])        % X轴坐标范围
ylim([-2.5 2.5])    % Y轴坐标范围
h = legend('图例1','图例2'); % 图例
set(h,'fontsize',fontsize_legend); % 设置图例字体大小
set(gca,'linewidth',linewidth_gca,'fontsize',fontsize_gca) % 设置横纵坐标轴线宽和刻度字体大小
set(gca,'GridLineStyle','--'); % 设置网格线样式为虚线
xlabel('横轴变量名','fontsize',fontsize_label) % 设置横坐标标签字体大小
ylabel('纵轴变量名','fontsize',fontsize_label) % 设置纵坐标标签字体大小
title('A4单栏大图16,10') % 添加标题

% 设置输出保存图片的大小和格式
hfig = figure(3);
figWidth = 16;  % 设置图片宽度
figHeight = 10;  % 设置图片高度
set(hfig,'PaperUnits','centimeters'); % 图片尺寸所用单位
set(hfig,'PaperPosition',[0 0 figWidth figHeight]);
fileout = 'test3.'; % 输出图片的文件名
print(hfig,[fileout,'tif'],'-r300','-dtiff'); % 设置图片格式、分辨率

在这里插入图片描述
来源https://blog.csdn.net/weixin_43595277/article/details/116332147

柱状图

% 创建新的画布
figure;

% 第一个子图:展示两组柱状图的比较
y = [300 311; 390 425; 312 321; 250 185; 550 535; 420 432; 410 520;];
subplot(1, 3, 1);
b = bar(y);
grid on;
set(gca, 'XTickLabel', {'0', '1', '2', '3', '4', '5', '6'})
legend('算法1', '算法2');
xlabel('x 轴');
ylabel('y 轴');

% 第二个子图:使仅有的一组柱状图呈现不同颜色,默认的是相同颜色
data = [1.0, 1.0, 0.565, 0.508, 0.481, 0.745];
subplot(1, 3, 2);
b = bar(data);
ch = get(b, 'children');
set(ch, 'FaceVertexCData', [4; 2; 3; 1; 5; 6]); % 使用Indexed形式指定每组bar的颜色
set(gca, 'XTickLabel', {'C0', 'C1', 'C2', 'C3', 'C4', 'C5'})
axis([0 7 0.0 1.0]);
ylabel('micro F-measure');

% 第三个子图:使每个bar颜色不同,默认的是每个元素在不同组的颜色相同
data = [3, 7, 5, 2; 4, 3, 2, 9; 6, 6, 1, 4];
subplot(1, 3, 3);
b = bar(data);
ch = get(b, 'children');
set(ch{1}, 'FaceVertexCData', [1; 2; 3]); % 设置第一个元素在不同组的颜色
set(ch{2}, 'FaceVertexCData', [1; 2; 3]); % 设置第二个元素在不同组的颜色
set(ch{3}, 'FaceVertexCData', [1; 2; 3]);
set(ch{4}, 'FaceVertexCData', [1; 2; 3]);

% 添加注释

在这里插入图片描述

统计直方图

x = -10:.1:10;                  % 创建向量x,范围为-10到10,步长为0.1
y1 = randn(2008, 1);            % 生成2008个符合正态分布的随机数,存储在向量y1中
y2 = randn(2008, 3);            % 生成2008行3列符合正态分布的随机数,存储在矩阵y2中

figure;                         % 创建新的图形窗口

colormap(winter);               % 设置色图为winter颜色映射

% subplot(2,2,1): y1为向量,使用默认的10个条目,显示y1的直方图
subplot(2,2,1);
hist(y1);
title('y1为向量,default, n=10');  % 设置子图标题

% subplot(2,2,2): y2为矩阵,对每列进行处理,显示多组条形
subplot(2,2,2);
hist(y2);
title('y2为矩阵');               % 设置子图标题

% subplot(2,2,3): 向量x指定条目,计算y1中每个bin的频率并绘制条形直方图
subplot(2,2,3);
hist(y1, x);
% 或者使用以下两行代码,获取n和xout的值,然后用bar函数绘制条形直方图
% [n, xout] = hist(y1, x);
% bar(xout, n);
title('向量x指定条目');          % 设置子图标题

% subplot(2,2,4): 使用nbins=1000指定bin的数目,计算y2中每个bin的频率并绘制条形直方图
subplot(2,2,4);
hist(y2, 1000);
title('nbins=1000');            % 设置子图标题

在这里插入图片描述

离散数据杆状图

%stem和stem3函数用于绘制二维或三维的离散数据杆状图
%stem(Y)可以理解成绘制离散点的plot(y)函数
%stem(X,Y)可以理解成绘制离散点的plot(x,y)函数
%stem(...,'filled')改变数据点显示的空、实状态。
%stem(...,'LINESPEC')Linespec代表直线属性设置参量。
x=1:.1:10;
y=exp(x.*sin(x));
figure;
subplot(1,3,1);
plot(x,y,'.-r');
title('plot(x,y)');
subplot(1,3,2);
stem(x,y,'b');
subplot(1,3,3);
stem(x,y,':g','fill');
%绘制三维离散杆状图
th=(0:127)/128*2*pi;% 角度采样点
x=cos(th);
y=sin(th);
f=abs(fft(ones(10,1),128)); %对离散方波进行 FFT 变换,并取幅值
stem3(x,y,f','cd','fill');%绘制图形
view([-65 30]);
xlabel('Real'); %图形标注
ylabel('Imaginary');
zlabel('Amplitude');
title('FFT example');

在这里插入图片描述
来源https://blog.csdn.net/LvzJason/article/details/122578671

二维曲线

反应两个变量的因果关系;

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

在这里插入图片描述

二维散点图

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

clear; clc; close all;

x = linspace(1, 200, 100); % 均匀生成数字1~200,共计100个
y1 = log(x) + 1; % 生成函数y = log(x) + 1
y3 = y1 + rand(1, 100) - 0.5; % 生成函数y = y1 + 随机数 - 0.5

figure;
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;

legend('y1', 'y3'); % 生成图例 y1 和 y3

在这里插入图片描述

二维渐变图

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

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');

在这里插入图片描述

scatter函数用于创建散点图,其中可以通过不同的参数来指定散点的位置、大小和颜色。下面是scatter函数的用法概述:

  1. scatter(x, y): 创建一个包含圆形标记的散点图,其中x和y是等长的向量,用于指定散点的位置。

  2. scatter(x, y, sz): 指定圆的大小,sz可以是标量或向量,用于对所有圆或不同圆指定不同的大小。

  3. scatter(x, y, sz, c): 指定圆的颜色,c可以是一个颜色名称(例如’red’)或RGB值(例如[0.5, 0.2, 0.8]),用于为所有圆或不同圆指定不同的颜色。

  4. scatter(___,‘filled’): 使用’filled’选项填充圆,即将圆形标记填充为实心圆。

同时,scatter函数还支持在同一图像上绘制多组坐标,只需将x或y中的至少一个指定为矩阵即可。这样,就可以在散点图中绘制多组数据。

条形图

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]);
bar3 = bar([4:5:19], C, 'BarWidth', 0.2, 'FaceColor', 'w');
hold off;

ylabel('耗时/s')
xlabel('GMM阶数')
legend('训练耗时', '测试耗时', '总耗时');
labelID = {'8阶', '16阶', '32阶', '64阶'};
set(gca, 'XTick', 3:5:20);
set(gca, 'XTickLabel', labelID);

在这里插入图片描述

填充图

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

在这里插入图片描述

多Y轴图

figure; % 创建新的图像窗口

load('accidents.mat', 'hwydata'); % 加载'accidents.mat'文件中的'hwydata'变量

ind = 1:51; % 定义一个1到51的序列,用于表示州的编号

drivers = hwydata(:, 5); % 从'hwydata'中获取第5列数据,即'Licensed Drivers'

yyaxis left; % 使用左侧的y轴绘制第一个散点图
scatter(ind, drivers, 'LineWidth', 2); % 绘制散点图
title('Highway Data'); % 设置图像标题
xlabel('States'); % 设置x轴标签
ylabel('Licensed Drivers (thousands)'); % 设置左侧y轴标签

pop = hwydata(:, 7); % 从'hwydata'中获取第7列数据,即'Population'

yyaxis right; % 使用右侧的y轴绘制第二个散点图
scatter(ind, pop, 'LineWidth', 2); % 绘制散点图
ylabel('Vehicle Miles Traveled (millions)'); % 设置右侧y轴标签


在这里插入图片描述

二维场图

% 直接拷贝streamline函数的帮助文档示例代码

% 生成网格点
[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));

% 获取所有流线的属性
figure;
quiver(x, y, u, v); % 使用箭头来直观地显示矢量场
streamline(x, y, u, v, startx, starty); % 绘制流线

在这里插入图片描述

三维曲线图

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 组数据, 也就是目标图上的 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 空间绘制曲线, 保证 x y z 长度一致即可
    plot3(xx, y, zz, 'LineWidth', 2);
    hold on
end
hold off

legend('line 1', 'line 2', 'line 3', 'line 4', 'line 5');

在这里插入图片描述

三维散点图

figure;

[X, Y, Z] = sphere(16); % 生成球体的网格数据

% 将球体数据沿着x、y、z方向分别缩放0.5、0.75和1.0倍,并展开成一维数组
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]; % 设置散点的填充颜色为深青色

在这里插入图片描述

x = linspace(1, 200, 100); % 创建包含100个从1到200的均匀分布的数字的向量

y1 = log(x) + 1; % 计算y1向量,即log(x) + 1
y2 = log(x) + 2; % 计算y2向量,即log(x) + 2

y3 = y1 + rand(1, 100) - 0.5; % 计算y3向量,即y1加上一个随机误差,误差范围在-0.5到0.5之间

figure; % 创建新的图像窗口

% 使用scatter3函数绘制填充散点图
% x坐标为x向量,y坐标为y2向量,z坐标为y3向量
% 点的大小由x向量控制,点的颜色由x向量控制
% 'filled'参数指定填充点
scatter3(x, y2, y3, x, x, 'filled');

在这里插入图片描述

三维伪彩图

[x, y, z] = peaks(30); % 使用peaks函数生成一组数据,包含x、y、z三个变量

figure; % 创建新的图像窗口

% 绘制第一幅图
subplot(1, 2, 1); % 将图像划分为1行2列,并设置当前使用的子图为第1个子图
surf(x, y, z); % 使用surf函数绘制3D表面图

% 获取第一幅图的colormap,colormap默认为parula
plot1 = gca; % 获取当前子图的句柄,即第一幅图的句柄

subplot(1, 2, 2); % 将图像划分为1行2列,并设置当前使用的子图为第2个子图
surf(x, y, z); % 使用surf函数绘制3D表面图

% 设置第二幅图的颜色为hot colormap
colormap(hot);

% 设置第一幅图的颜色显示为parula colormap
colormap(plot1, parula);

在这里插入图片描述

% 创建一个图像窗口
figure;

% 绘制第一个3D表面图
h1 = surf(x, y, z);

% 在同一张图上绘制第二个3D表面图,并将它在z方向上偏移5个单位
hold on
h2 = surf(x, y, z + 5);
hold off

% 设置颜色为hot colormap
colormap(hot);

在这里插入图片描述

裁剪伪彩图

% 创建一个新的图像窗口
figure;

n = 300; % 设置n为300

% 生成peaks数据
[x, y, z] = peaks(n);

% 绘制第一个3D表面图
subplot(2, 2, [1, 3]); % 将图像划分为2行2列,并设置当前使用的子图为第1个和第3个子图
surf(x, y, z); % 使用surf函数绘制3D表面图
shading interp; % 设置渐变颜色
view(0, 90); % 设置视角为俯视

% 对数据进行处理
for i = 1:n
    for j = 1:n
        % 根据条件对z值进行修改
        if x(i, j)^2 + 2 * y(i, j)^2 > 6 && 2 * x(i, j)^2 + y(i, j)^2 < 6
            z(i, j) = NaN; % 若满足条件,则将对应位置的z值设置为NaN
        end
    end
end

% 绘制第二个3D表面图
subplot(2, 2, 2); % 将图像划分为2行2列,并设置当前使用的子图为第2个子图
surf(x, y, z); % 使用surf函数绘制3D表面图
shading interp; % 设置渐变颜色
view(0, 90); % 设置视角为俯视

% 绘制第三个3D表面图
subplot(2, 2, 4); % 将图像划分为2行2列,并设置当前使用的子图为第4个子图
surf(x, y, z); % 使用surf函数绘制3D表面图
shading interp; % 设置渐变颜色

在这里插入图片描述

等高线图

% 创建一个新的图像窗口
figure;

% 获取peaks数据
[X, Y, Z] = peaks;

% 绘制第一个等高线图
subplot(2, 2, 1); % 将图像划分为2行2列,并设置当前使用的子图为第1个子图
contour(X, Y, Z, 20, 'LineWidth', 2); % 使用contour函数绘制等高线图,20表示等高线的数量,LineWidth设置线宽

% 绘制第二个等高线图,使用虚线
subplot(2, 2, 2); % 将图像划分为2行2列,并设置当前使用的子图为第2个子图
contour(X, Y, Z, '--', 'LineWidth', 2); % 使用contour函数绘制虚线等高线图,LineWidth设置线宽

% 绘制第三个等高线图,显示指定等高线值
subplot(2, 2, 3); % 将图像划分为2行2列,并设置当前使用的子图为第3个子图
v = [1, 1]; % 指定等高线值
contour(X, Y, Z, v, 'LineWidth', 2); % 使用contour函数绘制等高线图,LineWidth设置线宽

% 生成新的数据并绘制第四个等高线图,显示等高线上的数值
x = -2:0.2:2; % 生成x数据
y = -2:0.2:3; % 生成y数据
[X, Y] = meshgrid(x, y); % 生成网格数据
Z = X .* exp(-X.^2 - Y.^2); % 计算z值
subplot(2, 2, 4); % 将图像划分为2行2列,并设置当前使用的子图为第4个子图
contour(X, Y, Z, 'ShowText', 'on', 'LineWidth', 2); % 使用contour函数绘制等高线图,并显示等高线上的数值,LineWidth设置线宽

在这里插入图片描述

三维等高线图

% 创建一个新的图像窗口,并设置其位置为[0, 0, 900, 400]
figure('Position', [0, 0, 900, 400]);

% 绘制第一个3D等高线图
subplot(1, 3, 1); % 将图像划分为1行3列,并设置当前使用的子图为第1个子图
[X, Y, Z] = sphere(50); % 获取sphere数据
contour3(X, Y, Z, 'LineWidth', 2); % 使用contour3函数绘制3D等高线图,LineWidth设置线宽

% 生成新的数据并绘制第二个3D等高线图,显示指定等高线值和显示数值
[X, Y] = meshgrid(-2:0.25:2); % 生成x, y数据
Z = X .* exp(-X.^2 - Y.^2); % 计算z值
subplot(1, 3, 2); % 将图像划分为1行3列,并设置当前使用的子图为第2个子图
contour3(X, Y, Z, [-0.2, -0.1, 0.1, 0.2], 'ShowText', 'on', 'LineWidth', 2); % 使用contour3函数绘制3D等高线图,指定显示的等高线值和数值,LineWidth设置线宽

% 获取peaks数据并绘制第三个3D等高线图,显示指定等高线值
[X, Y, Z] = peaks; % 获取peaks数据
subplot(1, 3, 3); % 将图像划分为1行3列,并设置当前使用的子图为第3个子图
contour3(X, Y, Z, [2, 2], 'LineWidth', 2); % 使用contour3函数绘制3D等高线图,指定显示的等高线值和数值,LineWidth设置线宽

在这里插入图片描述

等高线填充图

% 创建一个新的图像窗口
figure;

% 绘制第一个等高线填充图
subplot(2, 2, 1); % 将图像划分为2行2列,并设置当前使用的子图为第1个子图
[X, Y, Z] = peaks(50); % 获取peaks数据
contourf(X, Y, Z); % 使用contourf函数绘制等高线填充图

% 绘制第二个等高线填充图,使用虚线
subplot(2, 2, 2); % 将图像划分为2行2列,并设置当前使用的子图为第2个子图
contourf(X, Y, Z, '--'); % 使用contourf函数绘制虚线等高线填充图,虚线样式由'--'指定

% 限定范围,并绘制第三个等高线填充图,显示指定等高线值和数值
subplot(2, 2, 3); % 将图像划分为2行2列,并设置当前使用的子图为第3个子图
contourf(X, Y, Z, [2, 3], 'ShowText', 'on'); % 使用contourf函数绘制等高线填充图,显示指定等高线值为[2, 3],并显示等高线上的数值

% 绘制第四个等高线填充图,显示指定等高线值为[2, 2]
subplot(2, 2, 4); % 将图像划分为2行2列,并设置当前使用的子图为第4个子图
contourf(X, Y, Z, [2, 2]); % 使用contourf函数绘制等高线填充图,显示指定等高线值为[2, 2]

在这里插入图片描述

三维矢量场图

% 创建一个新的图像窗口
figure;

% 获取peaks数据
[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);

% 设置x和y轴的显示范围
xlim([-3, 3]);
ylim([-3, 3.2]);

% 使用插值填充曲面
shading interp

hold off

% 设置视角为俯视图
view(0, 90);

在这里插入图片描述

伪彩图+投影图

% 清除工作区、命令窗口和关闭所有图形窗口
clear; clc; close all;

% 生成坐标向量 x 和 y
x = linspace(-3, 3, 30);
y = linspace(-4, 4, 40);

% 生成网格 X 和 Y
[X, Y] = meshgrid(x, y);

% 计算 peaks 函数的 Z 值
Z = peaks(X, Y);

% 部分区域置零
Z(5:10, 15:20) = 0;

% 计算 Z 的最大值
z1 = max(Z);

% 计算 Z 每行的最大值
z2 = max(Z, [], 2);

% 创建新的图像窗口,并划分为 3x3 的子图区域
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); % 绘制 peaks 函数的三维图像

xlim([-3, 3]); % 设置 x 轴的显示范围
ylim([-4, 4]); % 设置 y 轴的显示范围
view(0, 90); % 设置视角为俯视图
shading interp; % 平滑图像

在这里插入图片描述

热图

% 清除工作区和命令窗口
clear; clc;

% 生成大小为 50x50 的随机矩阵 z
z = rand(50);

% 将 z 的元素根据阈值替换为指定值
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;

% 将部分元素设置为 NaN
for i = 1:30
    z(randi(50, 1, 1):end, i) = nan;
end

for i = 31:50
    z(30 + randi(20, 1, 1):end, i) = nan;
end

% 将指定区域设置为 NaN
z(20:25, 40:45) = nan;

% 创建新的图像窗口
figure;

% 使用 pcolor 绘制伪彩色图像,并获取绘图对象 ax
ax = pcolor(z);

% 设置视角为俯视图
view(0, 90);

% 设置边界线颜色为白色
ax.EdgeColor = [1, 1, 1];

在这里插入图片描述

分子模型图

% 清除工作区和命令窗口
clear; clc;

% 生成球面的坐标信息,将球面分为 100 个点
[x, y, z] = sphere(100);

% 大球的缩放比例
C = 10;

% 小球的缩放比例
H = 5;

% 创建新的图像窗口
figure;

% 绘制大球,红色,无边界线
surf(C * x, C * y, C * z, 'FaceColor', [0.5 0 0], 'EdgeColor', 'none');
hold on

% 绘制四个小球,都稍微偏离一点位置,准确位置需要计算
% 这里只是演示一个大致位置
surf(H * x, H * y, H * z + 10, 'FaceColor', [0 0 0.5], 'EdgeColor', 'none');
surf(H * x + 10, H * y, H * z - 3, 'FaceColor', [0 0 0.5], 'EdgeColor', 'none');
surf(H * x - 4, H * y - 10, H * z - 3, 'FaceColor', [0 0 0.5], 'EdgeColor', 'none');
surf(H * x - 4, H * y + 10, H * z - 3, 'FaceColor', [0 0 0.5], 'EdgeColor', 'none');

% 设置坐标轴相等并关闭显示
axis equal off;

% 添加光源,增加立体感
light;

% 关闭光照效果
lighting none;

在这里插入图片描述

分形图

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; % 初始化 x 和 y

n = 100000; % 迭代次数,这里增加到 10000000

kx = zeros(1, n); % 存储 x 的迭代结果
ky = zeros(1, n); % 存储 y 的迭代结果

% 迭代循环
for i = 1:n
    % 计算新的 x 和 y 值
    temp_x = sin(a * y) + c * cos(a * x);
    temp_y = sin(b * x) + d * cos(b * y);
    
    % 存入数组
    kx(i) = temp_x;
    ky(i) = temp_y;
    
    % 重新赋值 x, y
    x = temp_x;
    y = temp_y;
end

% 绘制散点图
scatter(kx, ky, 0.1, 'green');

在这里插入图片描述

MATLAB轻松绘制地图路线——已知及未知坐标

https://blog.csdn.net/wayne6515/article/details/112647925

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/834368.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

“华为杯”研究生数学建模竞赛2016年-【华为杯】A题:多无人机协同任务规划

目录 摘 要&#xff1a; 1. 问题重述 1 . 1 问题背景 1 . 2 需要解决的问题 2. 模型的假设 3. 符号说明 4. 问题一&#xff08;协同侦察&#xff09; 4 . 1 问题分析及模型建立 4 . 2 问题求解 4.2.1 加载 S-1 型载荷的无人机的航迹优化 4.2.2 加载 S-2 型载荷的无人机的航迹优…

【java安全】无Commons-Collections的Shiro550反序列化利用

文章目录 【java安全】无Commons-Collections的Shiro550反序列化利用Shiro550利用的难点CommonsBeanutils1是否可以Shiro中&#xff1f;什么是serialVersionUID&#xff1f;W 无依赖的Shiro反序列化利用链POC 【java安全】无Commons-Collections的Shiro550反序列化利用 Shiro5…

【JMeter】 使用Synchronizing Timer设置请求集合点,实现绝对并发

目录 布局设置说明 Number of Simulated Users to Group Timeout in milliseconds 使用时需要注意的点 集合点作用域 实际运行 资料获取方法 布局设置说明 参数说明&#xff1a; Number of Simulated Users to Group 每次释放的线程数量。如果设置为0&#xff0c;等同…

21.Netty源码之编码器

highlight: arduino-light Netty如何实现自定义通信协议 在学习完如何设计协议之后&#xff0c;我们又该如何在 Netty 中实现自定义的通信协议呢&#xff1f;其实 Netty 作为一个非常优秀的网络通信框架&#xff0c;已经为我们提供了非常丰富的编解码抽象基类&#xff0c;帮助我…

帕累托森林:IEEE Fellow唐远炎院士出任「儒特科技」首席架构官

导语 「儒特科技」作为一家拥有全球独创性极致化微内核Web引擎架构的前沿科技企业&#xff0c;从成立即受到中科院软件所和工信部的重点孵化及扶持&#xff0c;成长异常迅速。前不久刚正式官方融入中国五大根操作系统体系&#xff0c;加速为其下游上千家相关衍生OS和应用软件企…

Dockerfile构建MySQL镜像(yum方式)

目录 Dockerfile构建MySQL镜像 1、建立工作目录 2、编写Dockerfile文件 3、构建镜像 4、测试容器 Dockerfile构建MySQL镜像 1、建立工作目录 [roothuyang1 ~]# mkdir mysql [roothuyang1 ~]# cd mysql/ 2、编写Dockerfile文件 [roothuyang1 mysql]# vim Dockerfile 配置如…

软件外包开发的GO开发框架

近些年GO语言使用的越来越多&#xff0c;尤其是在web应用开发和高性能服务器的项目里。在开发新项目时掌握一些常用的开发框架可以节省开发时间提高工作效率&#xff0c;也是对软件开发人员基本的技能要求。今天和大家分享一些常见的GO语言开发框架&#xff0c;希望对大家有所帮…

redis原理 6:小道消息 —— PubSub

前面我们讲了 Redis 消息队列的使用方法&#xff0c;但是没有提到 Redis 消息队列的不足之处&#xff0c;那就是它不支持消息的多播机制。 img 消息多播 消息多播允许生产者生产一次消息&#xff0c;中间件负责将消息复制到多个消息队列&#xff0c;每个消息队列由相应的消费组…

OPENCV C++(一) 二进制和灰度原理 处理每个像素点值的方法

#include <opencv2/opencv.hpp> using namespace std; using namespace cv;必须包含的头文件&#xff01; 才能开始编写代码 读取相片 一般来说加个保护程序 不至于出error和卡死 Mat image imread("test.webp"); //存放自己图像的路径 if (image.empty()){p…

虚拟机网络图标不见了

有3台虚拟机之前正常运行的&#xff0c;有一天打开虚拟机发现2台虚拟机的网络连接图标不见了&#xff0c;也ping不通另外两台。 解决&#xff1a;在终端执行以下命令&#xff0c;即可ping通 [roothadoop103 ~]# sudo nmcli network off [roothadoop103 ~]# sudo nmcli network…

大数据Flink(五十六):Standalone伪分布环境(开发测试)

文章目录 Standalone伪分布环境(开发测试) 一、架构图 二、环境准备 三、下载安装包</

Android LinearLayout dynamic add child ImageView,Glide load,kotlin

Android LinearLayout dynamic add child ImageView&#xff0c;Glide load&#xff0c;kotlin images.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"andro…

postgresql|数据库|MySQL数据库向postgresql数据库迁移的工具pgloader的部署和初步使用

前言&#xff1a; MySQL数据库和postgresql数据库之间的差异并不多&#xff0c;这里的差异指的是对SQL语言的支持两者并不大&#xff0c;但底层的东西差异是非常多的&#xff0c;例如&#xff0c;MySQL的innodb引擎概念&#xff0c;数据库用户管理&#xff0c;这些和postgresq…

循环队列——数据结构与算法

&#x1f636;‍&#x1f32b;️Take your time ! &#x1f636;‍&#x1f32b;️ &#x1f4a5;个人主页&#xff1a;&#x1f525;&#x1f525;&#x1f525;大魔王&#x1f525;&#x1f525;&#x1f525; &#x1f4a5;代码仓库&#xff1a;&#x1f525;&#x1f525;魔…

24考研数据结构-哈夫曼树与哈夫曼编码

这里写目录标题 5.5树与二叉树的应用5.5.1 哈夫曼树和哈夫曼编码1. 带权路径长度的定义2. 哈夫曼树的定义&#xff08;最优二叉树&#xff0c;不唯一&#xff09;3. 哈夫曼树的构造4. 哈夫曼树的特点5.哈夫曼编码&#xff08;最短二进制前缀编码&#xff09; 数据结构&#xff…

Windows terminal 添加 git bash 解决git中文乱码显示问题

Windows terminal 添加 git bash 解决git中文乱码显示问题 在 windows terminal 中配置git 说明&#xff1a; 点击箭头选择设置 说明&#xff1a; 点击"添加新配置文件"配置名称命令行&#xff0c;可执行文件的具体语句 C:\Program Files\Git\bin\bash.exe启动目录…

【100天精通python】Day25:python的编程方式以及并发编程详解

目录 专栏导读 1 python的编程方式 2 顺序编程 3 面向对象编程 4 函数式编程 5 并发编程 5.1 多线程编程 threading模块常用用法 1 创建线程&#xff1a; 2 启动线程&#xff1a; 3 等待线程执行完毕&#xff1a; 4 获取当前活动线程数量&#xff1a; 5 获取当前线程…

elasticSearch常见的面试题

常见的面试问题 描述使用场景 es集群架构3个节点&#xff0c;根据不同的服务创建不同的索引&#xff0c;根据日期和环境&#xff0c;平均每天递增60*2&#xff0c;大约60Gb的数据。 调优技巧 原文参考&#xff1a;干货 | BAT等一线大厂 Elasticsearch面试题解读 - 掘金 设计阶…

Mac 安装不在 Apple 商店授权的应用程序

文章目录 一、场景介绍二、实操说明 一、场景介绍 在日常的工作生活中&#xff0c;发现一些好用的应用程序&#xff0c;但是出于某些原因&#xff0c;应用程序的开发者并没有将安装包上架到苹果商店。 那么这些优秀的应用程序下载安装以后就会出现如下弹框被拒之门外 二、实操…

【react】react生命周期钩子函数:

文章目录 一、生命周期概念:二、生命周期:三、挂载阶段&#xff08;constructor > render > componentDidMount&#xff09;&#xff1a;四、更新阶段&#xff08;render > componentDidUpdate&#xff09;&#xff1a;五、卸载阶段&#xff08;componentWillUnmount …