如何在MATLAB中创建各种常用的图形

本文将介绍如何在MATLAB中创建各种常用的图形。将涵盖以下内容:

  1. 基本的二维图形

    • 折线图(Line Plot)
    • 散点图(Scatter Plot)
    • 条形图(Bar Plot)
    • 面积图(Area Plot)
  2. 三维图形

    • 三维曲面图(3D Surface Plot)
    • 三维散点图(3D Scatter Plot)
    • 三维条形图(3D Bar Plot)
  3. 特殊图形

    • 极坐标图(Polar Plot)
    • 热图(Heatmap)
    • 雷达图(Radar Chart)
  4. 多图和子图

    • 多图并排显示(Multiple Plots in One Figure)
    • 子图(Subplots)
  5. 数据动画

    • 动态更新图形(Animating Plots)

将为每种图形提供详细的示例代码,并解释每个图形的常见用法和调整技巧。

1. 基本的二维图形

折线图(Line Plot)

折线图是最常见的图形之一,用于显示数据点之间的连接。

cpp 复制代码
% 生成数据
x = 0:0.1:10;
y = sin(x);

% 创建折线图
figure;
plot(x, y, '-o', 'LineWidth', 2, 'MarkerSize', 6, 'MarkerFaceColor', 'blue'); % 使用 'o' 标记数据点,设置线宽和标记大小
title('Sine Wave'); % 设置标题
xlabel('X-axis'); % 设置 X 轴标签
ylabel('Y-axis'); % 设置 Y 轴标签
legend({'sin(x)'}, 'Location', 'northeast'); % 添加图例
grid on; % 打开网格线
set(gca, 'FontSize', 12); % 设置坐标轴字体大小

散点图(Scatter Plot)

散点图用于显示两个变量之间的关系。

cpp 复制代码
% 生成随机数据
x = randn(1, 100);
y = randn(1, 100);
c = sqrt(x.^2 + y.^2); % 用于着色的数据

% 创建散点图
figure;
scatter(x, y, 50, c, 'filled'); % '50' 表示标记大小,'c' 用于颜色,'filled' 表示填充标记
title('Scatter Plot with Color Mapping'); % 设置标题
xlabel('X-axis'); % 设置 X 轴标签
ylabel('Y-axis'); % 设置 Y 轴标签
colorbar; % 添加颜色条
legend({'Data Points'}, 'Location', 'northeast'); % 添加图例
grid on; % 打开网格线
set(gca, 'FontSize', 12); % 设置坐标轴字体大小

条形图(Bar Plot)

条形图用于比较不同类别的数据。

cpp 复制代码
% 生成数据
categories = {'A', 'B', 'C', 'D'};
values = [10, 23, 17, 5];

% 创建条形图
figure;
bar(values, 'FaceColor', [0.2, 0.2, 0.5]); % 设置条形的颜色
set(gca, 'xticklabel', categories); % 设置 X 轴的类别标签
title('Bar Plot'); % 设置标题
xlabel('Categories'); % 设置 X 轴标签
ylabel('Values'); % 设置 Y 轴标签
legend({'Category Values'}, 'Location', 'northeast'); % 添加图例
grid on; % 打开网格线
set(gca, 'FontSize', 12); % 设置坐标轴字体大小

面积图(Area Plot)

面积图显示的是累积的数据,可以用来表示随时间变化的量。

Matlab 复制代码
% 生成数据
x = 0:0.1:10;
y1 = sin(x);
y2 = cos(x);

% 创建面积图
figure;
area(x, [y1; y2]', 'LineWidth', 1.5); % 设置线宽
title('Area Plot of Sine and Cosine Functions'); % 设置标题
xlabel('X-axis'); % 设置 X 轴标签
ylabel('Y-axis'); % 设置 Y 轴标签
legend({'sin(x)', 'cos(x)'}, 'Location', 'northeast'); % 添加图例
grid on; % 打开网格线
set(gca, 'FontSize', 12); % 设置坐标轴字体大小

2. 三维图形

三维曲面图(3D Surface Plot)

三维曲面图用于显示数据的三维分布。

Matlab 复制代码
% 生成数据
[x, y] = meshgrid(-3:0.1:3, -3:0.1:3);
z = peaks(x, y);

% 创建三维曲面图
figure;
surf(x, y, z, 'EdgeColor', 'none'); % 'EdgeColor' 设置为 'none' 来去掉网格线
title('3D Surface Plot of Peaks Function'); % 设置标题
xlabel('X-axis'); % 设置 X 轴标签
ylabel('Y-axis'); % 设置 Y 轴标签
zlabel('Z-axis'); % 设置 Z 轴标签
colorbar; % 添加颜色条
grid on; % 打开网格线
set(gca, 'FontSize', 12); % 设置坐标轴字体大小
view(3); % 设置三维视图

三维散点图(3D Scatter Plot)

三维散点图用于显示三维空间中的数据点。我们将数据点着色并添加图例。

Matlab 复制代码
% 生成数据
x = randn(1, 100);
y = randn(1, 100);
z = randn(1, 100);
c = sqrt(x.^2 + y.^2 + z.^2); % 用于着色的数据

% 创建三维散点图
figure;
scatter3(x, y, z, 50, c, 'filled'); % '50' 表示标记大小,'c' 用于颜色,'filled' 表示填充标记
title('3D Scatter Plot with Color Mapping'); % 设置标题
xlabel('X-axis'); % 设置 X 轴标签
ylabel('Y-axis'); % 设置 Y 轴标签
zlabel('Z-axis'); % 设置 Z 轴标签
colorbar; % 添加颜色条
legend({'Data Points'}, 'Location', 'northeast'); % 添加图例
grid on; % 打开网格线
set(gca, 'FontSize', 12); % 设置坐标轴字体大小
view(3); % 设置三维视图

三维条形图(3D Bar Plot)

三维条形图用于显示三维数据的柱状图。

Matlab 复制代码
% 生成数据
values = randi(10, 5, 5);

% 创建三维条形图
figure;
bar3(values, 'detached'); % 'detached' 选项将条形分离
title('3D Bar Plot'); % 设置标题
xlabel('X-axis'); % 设置 X 轴标签
ylabel('Y-axis'); % 设置 Y 轴标签
zlabel('Values'); % 设置 Z 轴标签
grid on; % 打开网格线
set(gca, 'FontSize', 12); % 设置坐标轴字体大小

3. 特殊图形

极坐标图(Polar Plot)

极坐标图用于表示极坐标数据。

Matlab 复制代码
% 生成数据
theta = 0:0.01:2*pi;
rho = sin(2*theta).*cos(2*theta);

% 创建极坐标图
figure;
polarplot(theta, rho, 'LineWidth', 2); % 设置线宽
title('Polar Plot of sin(2\theta)cos(2\theta)'); % 设置标题
legend({'Polar Function'}, 'Location', 'northeast'); % 添加图例
set(gca, 'FontSize', 12); % 设置坐标轴字体大小

热图(Heatmap)

热图用于显示数据矩阵的值的热力分布。

Matlab 复制代码
% 生成数据
data = rand(10, 10);

% 创建热图
figure;
heatmap(data, 'Colormap', parula, 'ColorbarVisible', 'on'); % 使用 parula 配色,打开颜色条
title('Heatmap of Random Data'); % 设置标题
xlabel('X-axis'); % 设置 X 轴标签
ylabel('Y-axis'); % 设置 Y 轴标签
set(gca, 'FontSize', 12); % 设置坐标轴字体大小

雷达图(Radar Chart)

雷达图用于显示多个变量的数据。

Matlab 复制代码
% 生成数据
data = [5 3 9 1 6];
categories = {'Speed', 'Strength', 'Agility', 'Endurance', 'Intelligence'};

% 创建雷达图
figure;
polarplot(data, '-o', 'LineWidth', 2, 'MarkerSize', 6, 'MarkerFaceColor', 'blue'); % 设置线宽和标记大小
thetalim([0 360]); % 设置极坐标的角度范围
title('Radar Chart'); % 设置标题
ax = gca;
ax.ThetaTick = 0:72:360; % 设置类别的角度分布
ax.ThetaTickLabel = categories; % 设置类别标签
legend({'Attributes'}, 'Location', 'northeast'); % 添加图例
set(gca, 'FontSize', 12); % 设置坐标轴字体大小

4. 多图和子图

多图并排显示(Multiple Plots in One Figure)

在同一张图上显示多个图形。

Matlab 复制代码
% 生成数据
x = 0:0.1:10;
y1 = sin(x);
y2 = cos(x);

% 创建多图
figure;
plot(x, y1, '-o', 'LineWidth', 2, 'MarkerSize', 6, 'MarkerFaceColor', 'red'); % 设置线宽和标记大小
hold on;
plot(x, y2, '-x', 'LineWidth', 2, 'MarkerSize', 6, 'MarkerFaceColor', 'green'); % 设置线宽和标记大小
hold off;
title('Multiple Plots of Sine and Cosine'); % 设置标题
xlabel('X-axis'); % 设置 X 轴标签
ylabel('Y-axis'); % 设置 Y 轴标签
legend({'sin(x)', 'cos(x)'}, 'Location', 'northeast'); % 添加图例
grid on; % 打开网格线
set(gca, 'FontSize', 12); % 设置坐标轴字体大小

子图(Subplots)

将多个图形显示在一个图形窗口中。

Matlab 复制代码
% 生成数据
x = 0:0.1:10;
y1 = sin(x);
y2 = cos(x);

% 创建子图
figure;

subplot(2, 1, 1); % 创建第一个子图
plot(x, y1, '-o', 'LineWidth', 2, 'MarkerSize', 6, 'MarkerFaceColor', 'blue'); % 设置线宽和标记大小
title('Subplot 1: Sine Function'); % 设置标题
xlabel('X-axis'); % 设置 X 轴标签
ylabel('Y-axis'); % 设置 Y 轴标签
grid on; % 打开网格线
legend({'sin(x)'}, 'Location', 'northeast'); % 添加图例
set(gca, 'FontSize', 12); % 设置坐标轴字体大小

subplot(2, 1, 2); % 创建第二个子图
plot(x, y2, '-x', 'LineWidth', 2, 'MarkerSize', 6, 'MarkerFaceColor', 'red'); % 设置线宽和标记大小
title('Subplot 2: Cosine Function'); % 设置标题
xlabel('X-axis'); % 设置 X 轴标签
ylabel('Y-axis'); % 设置 Y 轴标签
grid on; % 打开网格线
legend({'cos(x)'}, 'Location', 'northeast'); % 添加图例
set(gca, 'FontSize', 12); % 设置坐标轴字体大小

5. 数据动画

动态更新图形(Animating Plots)

使用MATLAB的动画功能动态更新图形。

Matlab 复制代码
% 生成数据
x = 0:0.1:10;

% 创建动画
figure;
h = plot(x, sin(x), '-o', 'LineWidth', 2, 'MarkerSize', 6, 'MarkerFaceColor', 'blue'); % 设置线宽和标记大小
title('Animating Plot of Sine Wave'); % 设置标题
xlabel('X-axis'); % 设置 X 轴标签
ylabel('Y-axis'); % 设置 Y 轴标签
grid on; % 打开网格线
set(gca, 'FontSize', 12); % 设置坐标轴字体大小

% 动画循环
for k = 1:100
    y = sin(x + 0.1*k); % 动态更新 y 数据
    set(h, 'YData', y); % 更新图形数据
    drawnow; % 实时刷新图形
    pause(0.1); % 暂停以控制动画速度
end
相关推荐
hccee13 分钟前
C# IO文件操作
开发语言·c#
hummhumm18 分钟前
第 25 章 - Golang 项目结构
java·开发语言·前端·后端·python·elasticsearch·golang
J老熊28 分钟前
JavaFX:简介、使用场景、常见问题及对比其他框架分析
java·开发语言·后端·面试·系统架构·软件工程
Matlab精灵40 分钟前
Matlab科研绘图:自定义内置多款配色函数
算法·matlab
zmd-zk42 分钟前
flink学习(2)——wordcount案例
大数据·开发语言·学习·flink
好奇的菜鸟1 小时前
Go语言中的引用类型:指针与传递机制
开发语言·后端·golang
Alive~o.01 小时前
Go语言进阶&依赖管理
开发语言·后端·golang
花海少爷1 小时前
第十章 JavaScript的应用课后习题
开发语言·javascript·ecmascript
手握风云-1 小时前
数据结构(Java版)第二期:包装类和泛型
java·开发语言·数据结构
喵叔哟1 小时前
重构代码中引入外部方法和引入本地扩展的区别
java·开发语言·重构