MATLAB - 图形
MATLAB - 高级图形与可视化
Section titled “MATLAB - 高级图形与可视化”MATLAB 提供了强大而灵活的图形系统用于数据可视化。本章探讨如何创建常见图表类型并对其进行自定义,以生成出版物质量的图形。
- 为分类数据创建条形图
- 使用等高线图可视化 3D 数据
- 生成 3D 表面图和网格图
- 创建高质量图形的现代技术
bar 函数非常适合显示与不同类别相关的数量。让我们可视化一组学生的考试成绩。
此脚本将生成学生成绩的条形图,并将其保存为高分辨率图像文件。
% 数据:学生成绩student_ids = 1:10;scores = [75, 58, 90, 87, 50, 85, 92, 75, 60, 95];
% 创建图窗figure;
% 绘制自定义颜色的条形图b = bar(student_ids, scores, 'FaceColor', [0.2, 0.6, 0.8]);
% 添加标签和标题以提高清晰度xlabel('Student ID');ylabel('Score (%)');title('First Semester Exam Scores');grid on; % 添加网格以提高可读性ylim([0 100]); % 设置 y 轴限制
% 将图窗保存到文件% exportgraphics 是用于保存绘图的现代推荐函数exportgraphics(gcf, 'student_scores.png', 'Resolution', 300);
% 要运行此代码,请将其保存为 .m 文件并执行。% 将出现一个绘图窗口,并保存名为 'student_scores.png' 的文件。该代码将生成一个带有条形图的窗口,显示十个条形,每个条形对应一个学生的成绩。x 轴标记为“Student ID”,y 轴为“Score (%)”,图表有标题。条形为蓝色,背景中可见网格。此图表的 PNG 文件也已创建。
绘制等高线图
Section titled “绘制等高线图”等高线图是 3D 曲面的 2D 表示。它使用线条或填充区域连接等值点(水平线)。它就像数据的地形图。
要创建等高线图,我们首先需要使用 meshgrid 定义 (x, y) 点的网格,然后在网格上的每个点处评估函数 z = f(x, y)。
% 步骤 1:创建 X 和 Y 坐标网格[X, Y] = meshgrid(-2:0.2:2, -2:0.2:2);
% 步骤 2:定义函数 Z = f(X, Y)Z = X .* exp(-X.^2 - Y.^2);
% 步骤 3:创建等高线图figure;[C, h] = contour(X, Y, Z, 10); % 创建具有 10 个层级的等高线图
% 步骤 4:为等高线添加标签clabel(C, h);
% 添加标题和轴标签title('Contour Plot of Z = X*exp(-X^2 - Y^2)');xlabel('X-axis');ylabel('Y-axis');
% 保存图窗exportgraphics(gcf, 'contour_plot.png', 'Resolution', 300);此脚本生成一个 2D 图,带有一系列同心、椭圆形的线条。每条线都标有一个数字,表示其恒定的 Z 值。这在平面上显示了 3D 函数的“山峰”和“山谷”。
为了获得曲面 z = f(x, y) 的真实 3D 视图,MATLAB 提供了 surf 和 mesh 等函数。
surf:创建带有实体彩色面的 3D 表面图。
mesh:创建 3D 线框网格图。
% 重用等高线示例中的网格和函数[X, Y] = meshgrid(-2:0.2:2);Z = X .* exp(-X.^2 - Y.^2);
% 创建新图窗figure;
% 使用 'tiledlayout' 在一个图窗中显示多个绘图tiledlayout(1, 2); % 1 行,2 列
% 第一个子图:surf 图nexttile;surf(X, Y, Z);shading interp; % 平滑颜色梯度colormap('winter'); % 应用配色方案title('surf() plot');xlabel('x'); ylabel('y'); zlabel('z');
% 第二个子图:mesh 图nexttile;mesh(X, Y, Z);title('mesh() plot');xlabel('x'); ylabel('y'); zlabel('z');
% 保存组合图窗exportgraphics(gcf, '3d_plots.png', 'Resolution', 300);此代码生成一个包含两个并排绘图的单个图窗窗口。左侧的图 (surf) 显示了一个平滑、彩色的表面,代表该函数,带有一个峰值和一个谷值。右侧的图 (mesh) 显示了相同的表面,但以线框形式,允许您看穿它。这演示了用于排列子图的现代 tiledlayout 函数。
出版物质量图形的最佳实践
Section titled “出版物质量图形的最佳实践”- 始终添加标签:每个绘图都需要一个标题,每个轴都需要一个带有单位的标签(
xlabel、ylabel、zlabel)。 - 使用句柄:获取绘图对象的句柄以编程方式控制其属性(例如,
ax = gca; ax.FontSize = 12;)。这提供了比简单命令更多的控制。 - 选择合适的颜色图:使用直观且易于理解的颜色图(例如,感知均匀颜色图,如 ‘viridis’ 或 ‘parula’)。
tiledlayout优于subplot:对于新代码,优先使用tiledlayout来排列多个绘图。它提供了更好的间距和更直观的控制。- 使用
exportgraphics导出:使用exportgraphics代替旧的print命令。它在分辨率、文件格式(PNG、JPEG、PDF、EPS)和背景颜色方面提供了更好的控制。