MATLAB - 绘图
MATLAB - 现代绘图
Section titled “MATLAB - 现代绘图”MATLAB 以其强大而灵活的 2D 和 3D 绘图功能而闻名。创建可用于出版的高质量可视化是该语言的核心优势。本指南将介绍创建和自定义图的现代面向对象方法。
创建绘图的基本工作流程包括以下步骤:
- 1. 准备数据:创建包含您数据的向量或矩阵。
linspace函数非常适合生成用于函数绘图的等间距数据。 - 2. 创建图窗:使用
figure命令打开一个新窗口来显示您的图。 - 3. 绘制数据:使用
plot、scatter或bar等绘图函数创建初始图形。最佳实践是获取绘图对象的句柄(handle),以便后续进行自定义。 - 4. 自定义和添加注释:添加标题、坐标轴标签、图例,并调整颜色、线型和其他属性,使绘图清晰且信息丰富。
创建基本 2D 绘图
Section titled “创建基本 2D 绘图”让我们绘制从 0 到 2π 的函数 y = sin(x)。请注意使用 linspace 来创建平滑曲线。
% 1. Prepare Data% 1. 准备数据x = linspace(0, 2*pi, 200); % Create 200 points from 0 to 2*pi% 创建从 0 到 2*pi 的 200 个点y = sin(x);
% 2. Create a Figure% 2. 创建图窗figure;
% 3. Plot the Data% 3. 绘制数据plot(x, y, 'LineWidth', 2); % Plot with a line width of 2% 以 2 的线宽绘制
% 4. Customize and Annotate% 4. 自定义和添加注释title('Plot of the Sine Function');% 设置标题xlabel('Angle (radians)');% 设置 x 轴标签ylabel('sin(x)');% 设置 y 轴标签grid on; % Add a grid% 添加网格线axis([0, 2*pi, -1.2, 1.2]); % Set axis limits [xmin, xmax, ymin, ymax]% 设置坐标轴范围 [xmin, xmax, ymin, ymax]在同一图形上绘制多个函数
Section titled “在同一图形上绘制多个函数”在同一坐标轴上绘制多条线的最现代、最灵活的方法是使用 hold on 和 hold off 命令。这种方法比旧语法更具可读性和可扩展性。
x = linspace(0, 10, 150);y1 = sin(x);y2 = cos(x);
figure;plot(x, y1, 'b-', 'LineWidth', 2); % Plot sin(x) as a solid blue line% 将 sin(x) 绘制为蓝色实线
hold on; % Keep the current plot active for adding more lines% 保持当前图窗活跃,以便添加更多线
plot(x, y2, 'r--', 'LineWidth', 2); % Plot cos(x) as a dashed red line% 将 cos(x) 绘制为红色虚线
title('Sine and Cosine Functions');% 设置标题xlabel('x');% 设置 x 轴标签ylabel('Function Value');% 设置 y 轴标签legend('sin(x)', 'cos(x)', 'Location', 'southwest'); % Add a legend% 添加图例
hold off; % Release the plot (new plots will replace it)% 释放绘图(新绘图将替换它)grid on;自定义线条颜色和样式
Section titled “自定义线条颜色和样式”MATLAB 提供了丰富的选项来自定义绘图的外观。您可以将颜色、线型和标记符号指定为一个字符串参数,或作为单独的名称-值对。
| 指定符 | 类型 | 值 |
|---|---|---|
r, g, b, k, m, c, y, w | 颜色 | 红色、绿色、蓝色、黑色、洋红色、青色、黄色、白色 |
- | 线型 | 实线(默认) |
-- | 线型 | 虚线 |
: | 线型 | 点线 |
-. | 线型 | 点划线 |
o, +, *, ., x, s, d | 标记 | 圆圈、加号、星号、点、叉号、正方形、菱形 |
示例: plot(x, y, '--mo') 创建一个带有圆形标记的虚线洋红色线条,每个数据点都有标记。
subplot 函数允许您在单个图窗窗口中以网格形式显示多个图。语法是 subplot(m, n, p),其中 m 是行数,n 是列数,p 是当前图的索引(按行计数)。
x = linspace(0, 5, 100);
figure;
% First subplot (top)% 第一个子图(顶部)subplot(2, 1, 1);y1 = exp(-1.5*x) .* sin(10*x);plot(x, y1);title('Subplot 1: Damped Sine Wave');% 设置标题ylabel('Amplitude');% 设置 y 轴标签grid on;
% Second subplot (bottom)% 第二个子图(底部)subplot(2, 1, 2);y2 = exp(-0.5*x) .* sin(10*x);plot(x, y2);title('Subplot 2: Less Damped Sine Wave');% 设置标题xlabel('Time (s)');% 设置 x 轴标签ylabel('Amplitude');% 设置 y 轴标签grid on;探索其他绘图类型
Section titled “探索其他绘图类型”MATLAB 的可视化库远不止线条图。以下是一些其他重要的绘图类型:
scatter:创建散点图,非常适合可视化两个变量之间的关系。bar:创建条形图,用于比较不同类别的值。histogram:创建直方图,显示一组数据的分布情况。errorbar:创建带有每个数据点误差线的线条图。
高级自定义与保存绘图
Section titled “高级自定义与保存绘图”要完全控制绘图的外观,您可以获取图形对象的句柄,并使用点表示法直接修改其属性。要保存最终的绘图,建议使用 exportgraphics 函数以获得高质量输出。
% ... (previous plotting code) ...% ... (之前的绘图代码) ...
% Get handle to current axes and change font size% 获取当前坐标轴句柄并更改字体大小ax = gca;ax.FontSize = 14;
% Save the current figure to a PNG file% 将当前图窗保存为 PNG 文件exportgraphics(ax, 'my_beautiful_plot.png', 'Resolution', 300);