常用二维画图函数
1.plot画图函数
Plot可以绘制二维图形,包括直线、曲线等,功能十分丰富和强大。
x = linspace(0, 2*pi, 100); y1 = sin(x); y2=zeros(1,100); % 在plot函数中直接指定属性 plot(x, y1, 'Color', 'r', 'LineWidth', 2, 'LineStyle', '-', 'Marker', ... 'o', 'MarkerSize', 10, 'MarkerFaceColor', 'g'); fill(x,y1,'b');%用指定颜色填充x,y1构成的多边形 hold on; %hold on 并不是必须的,但它可以使绘图过程更加灵活和方便, % 特别是当需要在同一坐标系上多次添加图形元素时。 % 此外,你可以先创建线条,然后使用set函数来设置属性 plot(x,y2,'b-.', 'LineWidth', 2); hold on; h = plot(x, abs(y1)); set(h, 'Color', 'g', 'LineWidth', 2, 'LineStyle', '-', 'Marker', ... 'o', 'MarkerSize', 10, 'MarkerFaceColor', 'r'); % 添加标题和轴标签 title('Customized Plot'); xlabel('X Axis');% 添加x轴标签 ylabel('Y Axis');% 添加y轴标签 % 设置图例,并调整字体大小和位置 h1=legend('y = sin(x)','y = 0','y = |sin(x)|',... 'FontSize',12, 'Location','best','Box', 'on'); % 如果需要,您还可以进一步自定义图例的其他属性,设置图例的背景框并指定颜色 set(h1, 'Box', 'on'); % 开启背景框 set(h1, 'Color', [0.9 0.9 0.9]); % 设置背景框颜色为浅灰色 % 注意:上述代码中的 'h1' 是 legend 对象的句柄 % 如果你直接使用 legend 函数而没有保存句柄,你需要使用 gca 获取当前坐标轴的句柄, % 然后通过 findobj 函数找到 legend 对象来设置其属性 grid on;% 显示网格 hold off;% 释放hold状态,以便进行其他操作或绘制新图形 |
在这段代码中,我们以plot(x,y1)为例解读该函数的用法。
使用plot函数绘制x和y1之间的数据点;'Color'参数设置线的颜色为红色('r');'LineWidth' 参数设置线的宽度为2;'LineStyle' 参数设置线的样式为实线(-);'Marker'参数设置数据点的标记样式为圆圈('o');'MarkerSize'参数设置数据点标记的大小为10;'MarkerFaceColor'参数设置数据点标记的填充颜色为绿色。
同样,legend函数设置图例,括号内的图例需要按照画图的顺序输入。此外,图例可以利用set函数设置图例的信息。同理,plot函数也可以。
注释:plot(x,y,...)函数中,只有y是必要的,其他的(x,Color,LineWidth...)参数都可根据需求选择是否省略。
以上整段代码的运行结果如下图:
2.scatter散点图
scatter:这个函数用于绘制散点图。你可以指定x轴和y轴的坐标点,并可以自定义点的颜色、大小和形状。
%% 2.散点图 X = -5:5; Y = X.^2 - 3; % 绘制所有点的散点图,绿色正方形 scatter(X, Y, 50, 'g', 'filled', 's', 'DisplayName', 'All Points (Green Squares)'); hold on; % 绘制Y>0的点的散点图,红色圆形 scatter(X(Y>0), Y(Y>0), 50, 'r', 'filled', 'o', 'DisplayName', 'Y > 0 Points (Red Circles)'); % 添加图例 legend show; hold off; % 其他可用的标记形状包括:'.', 'o', '+', '*', 'x', 'd', % '^', 'v', '>', '<', 'p', 'h', 'H', 's', 'D', 'd', '|', '_' |
Scatter函数和plot函数用法相似,都是可以根据需要设置参数并选择是否省略该参数。不过,plot和scatter的图例设置有所不同。
以上整段代码的运行结果如下图:
常用三维画图函数
1.mesh,surf,plot3
用案例介绍三种不同的三维画图函数:绘制三维曲面图z=xe-x²-y²
mesh(mesh,meshc,meshz)、surf(surf,surfc,surfl)和plot3是MATLAB中用于三维绘图的函数,它们各自适用于不同的数据类型和场景。
mesh函数:
适用数据类型:mesh函数通常用于绘制三维网格曲面图,它需要三个相同维数的矩阵作为输入,分别代表x、y和z坐标的网格点。
适用情况:当需要快速查看三维数据的整体结构,而不需要详细的颜色或光照效果时,mesh函数是一个很好的选择。它生成的网格图可以清晰地显示数据的轮廓和拓扑结构。
surf函数:
适用数据类型:与mesh类似,surf函数也需要三个相同维数的矩阵作为输入,分别代表x、y和z坐标的网格点。此外,它还可以接受一个可选的颜色矩阵作为输入,用于指定曲面的颜色。
适用情况:surf函数专门用于绘制三维着色曲面图,它可以产生带有颜色梯度的曲面,使数据的变化更加直观。当需要强调数据的细节、高度或颜色信息时,surf函数是一个更好的选择。
plot3函数:
适用数据类型:plot3函数用于在三维坐标系中绘制曲线、散点等图形。它接受三个向量或矩阵作为输入,分别代表x、y和z坐标的数据点。
适用情况:当需要在三维空间中绘制离散的数据点或连接的数据点时,plot3函数非常有用。例如,它可以用于绘制三维曲线、散点图或轨迹图等。
图形修饰和画图小用法
1.xlabel,ylabel,tiltle
分别为x轴,y轴和标题添加注释
2.figure函数的用法
figure(1); % 激活或创建编号为1的图形窗口
plot(1:10); % 在这个窗口中绘制一个简单的图形
close(1); % 关闭编号为1的图形窗口
......
figure(n); % 激活或创建编号为n的图形窗口
plot(10:-1:1); % 在这个窗口中绘制另一个图形
close(n); % 关闭编号为n的图形窗口
以下为普通或不常用画图函数
errorbar
这个函数用于绘制带有误差线的图。它对于显示实验数据的误差范围非常有用。
x = 1:5; y = randn(1, 5); e = rand(1, 5); errorbar(x, y, e); |
stem
这个函数用于绘制离散序列的茎图(stem plot)或针状图。茎图通常用于显示数字信号或数据序列。
x = 0:0.5:4*pi; y = sin(x); stem(x, y); %stem(x, y,'filled'); %没有'filled'是茎图,有则是针状图 |
bar
这个函数用于绘制条形图。你可以使用它来显示分类数据的数量或比较不同类别的值。
y = [5 10 15 20 25]; bar(y); |
hist 或 histogram
这两个函数都用于绘制直方图,但histogram函数提供了更多的自定义选项。直方图通常用于显示数据的分布。
data = randn(1, 1000); histogram(data); |
loglog, semilogx, semilogy:这些函数用于绘制对数坐标轴的图。例如,loglog函数用于绘制两个轴都是对数的图。
area:这个函数用于绘制面积图。面积图通过堆叠颜色区域来表示数据的大小。
fill:这个函数用于在二维平面上绘制填充的多边形。
polar:这个函数用于绘制极坐标图。
loglog全对数坐标绘图
loglog函数用于创建双对数坐标图,即X轴和Y轴都是对数尺度。这在需要表示数据在多个数量级上的变化时特别有用。
%% 2. 特殊图形绘制 % 创建一些示例数据 x = 10.^(0:0.1:5); % 从10^0到10^5的等比数列 y = x.^2; % y是x的平方 % 使用loglog函数绘制数据 loglog(x, y, 'b-o'); % 蓝色实线带圆圈标记 title('全对数坐标图 (loglog)'); xlabel('X 轴 (对数尺度)'); ylabel('Y 轴 (对数尺度)'); grid on; % 添加网格线 hold off;% 释放hold状态,以便进行其他操作或绘制新图形 |
semilogx半对数坐标(X轴)绘图
%% 3.semilogx半对数坐标(X轴)绘图 % 创建一些示例数据 x = 10.^(0:0.1:5); % 从10^0到10^5的等比数列 y = x.^2; % y是x的平方 % 使用semilogx函数绘制数据 semilogx(x, y, 'r-s'); % 红色实线带方块标记 title('半对数坐标图 (semilogx)'); xlabel('X 轴 (对数尺度)'); ylabel('Y 轴 (线性尺度)'); grid on; % 添加网格线 hold off; |
semilogy半对数坐标(Y轴)绘图
%% 4.semilogy半对数坐标(Y轴)绘图 % 创建一些示例数据 x = 0:0.1:5; % 从0到5的等差数列 y = 10.^(x.^2); % y是10的x平方次方 % 使用semilogy函数绘制数据 semilogy(x, y, 'g-*'); % 绿色虚线带星号标记 title('半对数坐标图 (semilogy)'); xlabel('X 轴 (线性尺度)'); ylabel('Y 轴 (对数尺度)'); grid on; % 添加网格线 hold off; |