如何在MATLAB中进行数据可视化

MATLAB的数据可视化功能是其核心优势之一,凭借简洁的语法和丰富的绘图函数,能快速将数值数据转化为直观的图形,广泛应用于数据分析、结果展示、论文绘图等场景。本文从基础绘图到进阶美化,系统讲解MATLAB数据可视化的核心方法,兼顾实用性和易操作性,适配科研、工程等各类应用场景。

一、MATLAB数据可视化基础认知

1. 核心绘图逻辑

MATLAB绘图遵循"数据准备→基础绘图→样式调整→标注导出"的流程,所有绘图操作均基于"图形句柄"(Figure),可理解为"先创建画布,再绘制图形,最后美化细节"。

2. 常用绘图类型与对应函数

绘图类型 适用场景 核心函数
二维折线图 数据趋势变化(如时间序列) plot()
散点图 变量间相关性分析 scatter()
柱状图/条形图 分类数据对比 bar()/barh()
直方图 数据分布统计 histogram()
饼图 占比分析 pie()
三维曲面图 二维数据的空间分布 surf()/mesh()

3. 基础环境准备

无需额外安装插件,打开MATLAB后,直接在命令行窗口(Command Window)或脚本文件(.m)中编写代码即可。本文基于MATLAB R2022b版本,兼容R2020及以上主流版本。

二、二维数据可视化(最常用)

二维图形是数据可视化的基础,重点掌握折线图、散点图、柱状图的绘制与美化。

1. 二维折线图(plot())

适用于展示数据随自变量的变化趋势,是最基础也最常用的绘图函数。

示例1:基础折线图

绘制函数 y=sin⁡(x)+cos⁡(x)y = \sin(x) + \cos(x)y=sin(x)+cos(x) 在 x∈[0,2π]x \in [0, 2\pi]x∈[0,2π] 范围内的曲线:

matlab 复制代码
% 步骤1:准备数据
x = 0:0.01:2*pi;  % 生成0到2π的等间隔数据,步长0.01(步长越小曲线越平滑)
y = sin(x) + cos(x);

% 步骤2:基础绘图
figure;  % 创建新的画布(避免覆盖已有图形)
plot(x, y);  % 绘制折线图,x为横轴,y为纵轴

% 步骤3:添加标注与样式
xlabel('x (弧度)');  % 横轴标签
ylabel('y = sin(x) + cos(x)');  % 纵轴标签
title('正弦+余弦函数曲线');  % 图形标题
grid on;  % 显示网格线
legend('y = sin(x)+cos(x)');  % 图例(单条曲线可省略,多条必加)
示例2:多曲线叠加绘图

在同一张图中绘制 y1=sin⁡(x)y_1 = \sin(x)y1=sin(x) 和 y2=cos⁡(x)y_2 = \cos(x)y2=cos(x),并区分样式:

matlab 复制代码
x = 0:0.01:2*pi;
y1 = sin(x);
y2 = cos(x);

figure;
% 绘制两条曲线,指定颜色、线型、标记(便于区分)
plot(x, y1, 'r-*', 'LineWidth', 1.5, 'MarkerSize', 6);  % 红色实线+星号标记,线宽1.5
hold on;  % 保留当前画布,继续绘制下一条曲线
plot(x, y2, 'b--o', 'LineWidth', 1.5, 'MarkerSize', 6);  % 蓝色虚线+圆圈标记
hold off;  % 关闭保留

% 美化标注
xlabel('x (弧度)');
ylabel('函数值');
title('sin(x)与cos(x)曲线对比');
grid on;
legend('sin(x)', 'cos(x)');  % 图例顺序与绘图顺序一致

关键参数说明

  • 颜色:r(红)、b(蓝)、g(绿)、k(黑)、m(品红);
  • 线型:-(实线)、--(虚线)、:(点线)、-.(点划线);
  • 标记:*(星号)、o(圆圈)、s(正方形)、^(上三角)。

2. 散点图(scatter())

适用于展示两个变量之间的相关性,例如分析身高与体重的关系。

示例:随机生成数据绘制散点图
matlab 复制代码
% 生成模拟数据:身高(150-190cm)与体重(40-80kg)
height = 150 + 40*rand(100, 1);  % 100个样本,150-190cm
weight = 40 + 0.8*(height-150) + 5*randn(100, 1);  % 体重与身高正相关,加随机噪声

figure;
scatter(height, weight, 50, 'filled', 'MarkerFaceColor', [0.2 0.6 0.8]);  % 点大小50,填充,自定义蓝色
xlabel('身高 (cm)');
ylabel('体重 (kg)');
title('身高与体重相关性散点图');
grid on;

参数说明50为点的大小,filled表示填充标记,MarkerFaceColor指定填充颜色(可传RGB值或预定义颜色)。

3. 柱状图(bar()/barh())

适用于对比不同分类的数据,例如不同月份的销售额、不同实验组的测试结果。

示例:分类数据柱状图
matlab 复制代码
% 准备数据:4个季度的销售额(万元)
quarters = {'Q1', 'Q2', 'Q3', 'Q4'};  % 分类标签
sales = [85, 120, 98, 150];  % 对应销售额

figure;
bar(quarters, sales, 'FaceColor', [0.1 0.7 0.3]);  % 绿色柱状图
xlabel('季度');
ylabel('销售额 (万元)');
title('2024年各季度销售额');
% 给每个柱子添加数值标签
for i = 1:length(sales)
    text(i, sales(i)+5, num2str(sales(i)), 'HorizontalAlignment', 'center');
end
grid on;

% 如需绘制横向柱状图,替换为barh():
% barh(quarters, sales);

4. 直方图(histogram())

用于展示数据的分布特征,例如学生成绩分布、产品尺寸误差分布。

示例:正态分布数据直方图
matlab 复制代码
% 生成1000个符合正态分布的随机数(均值50,标准差10)
data = 50 + 10*randn(1000, 1);

figure;
histogram(data, 20, 'Normalization', 'probability');  % 20个区间,归一化为概率
xlabel('数值');
ylabel('概率');
title('正态分布数据直方图');
grid on;

参数说明20为直方图的区间数,Normalization指定归一化方式(probability为概率,count为计数,density为密度)。

三、三维数据可视化

当数据涉及三个维度时(如空间坐标、二维网格的数值分布),需使用三维绘图函数,核心是plot3()(三维折线)、surf()(三维曲面)。

1. 三维折线图(plot3())

适用于展示三维空间中数据的轨迹,例如无人机飞行路径、三维曲线。

示例:三维螺旋线
matlab 复制代码
% 生成三维螺旋线数据
t = 0:0.1:10*pi;
x = sin(t);
y = cos(t);
z = t/2;

figure;
plot3(x, y, z, 'm-', 'LineWidth', 2);  % 品红色实线,线宽2
xlabel('X轴');
ylabel('Y轴');
zlabel('Z轴');
title('三维螺旋线');
grid on;
view(45, 30);  % 调整视角(方位角45°,仰角30°)

2. 三维曲面图(surf())

适用于展示二维网格上的数值分布,例如地形高度、温度场分布。

示例:二维高斯分布曲面
matlab 复制代码
% 生成二维网格
[X, Y] = meshgrid(-2:0.1:2, -2:0.1:2);  % 生成X、Y网格矩阵
% 计算高斯分布数值
Z = exp(-(X.^2 + Y.^2)/2) / (2*pi);

figure;
surf(X, Y, Z);  % 绘制曲面
shading interp;  % 平滑着色(默认是网格状,interp为插值平滑)
colorbar;  % 显示颜色条(对应Z值大小)
xlabel('X轴');
ylabel('Y轴');
zlabel('Z轴');
title('二维高斯分布曲面图');
view(30, 40);
grid on;

四、图形美化与导出

1. 通用美化技巧

  • 调整画布大小figure('Position', [100, 100, 800, 600])([左下角X, 左下角Y, 宽度, 高度],单位像素);
  • 自定义颜色 :除预定义颜色外,可使用RGB值(如[0.2 0.4 0.8]表示浅蓝色),或MATLAB的配色方案colormap(parula)(parula/jet/hsv等);
  • 修改字体与字号xlabel('X轴', 'FontSize', 12, 'FontName', 'SimHei')(SimHei为黑体,支持中文);
  • 图例位置调整legend('Location', 'best')(自动选最优位置)、'northwest'(西北方向)等。

2. 中文显示问题解决

MATLAB默认可能出现中文乱码,需提前设置字体:

matlab 复制代码
% 全局设置中文显示
set(0, 'DefaultAxesFontName', 'SimHei');  % 坐标轴字体
set(0, 'DefaultTextFontName', 'SimHei');  % 文本字体
set(0, 'DefaultFigureFontName', 'SimHei');  % 画布字体

3. 图形导出(高质量)

绘制完成后,需导出为高清格式(如PNG、PDF、EPS)用于论文/报告:

matlab 复制代码
% 方法1:代码导出(推荐,可控性高)
print(gcf, 'sales_plot.png', '-dpng', '-r300');  % gcf为当前画布,-r300为分辨率300DPI
% 方法2:手动导出:点击画布菜单栏"File→Save As",选择格式并设置分辨率。

导出建议

  • 论文配图:优先选PDF(矢量图,无失真)或EPS;
  • 演示文稿:选PNG(分辨率300DPI以上);
  • 大幅面展示:选TIFF格式。
相关推荐
guygg8810 小时前
一级倒立摆MATLAB仿真程序
开发语言·matlab
wang_yb18 小时前
打破堆积困局:优化堆积条形图的对比效果
数据分析·databook
实战项目20 小时前
大数据分析XX未来五年的房价走势
数据挖掘·数据分析
ghie909021 小时前
基于MATLAB的演化博弈仿真实现
开发语言·matlab
listhi52021 小时前
IMM雷达多目标跟踪MATLAB实现方案
人工智能·matlab·目标跟踪
GIS之路1 天前
ArcGIS Pro 实现影像波段合成
前端·python·信息可视化
Gofarlic_OMS1 天前
如何将MATLAB网络并发许可证闲置率降至10%以下
大数据·运维·服务器·开发语言·人工智能·matlab·制造
叫我:松哥1 天前
基于Flask框架开发的二手房数据分析与推荐管理平台,集成大数据分析、机器学习预测和智能推荐技术
大数据·python·深度学习·机器学习·数据分析·flask
YangYang9YangYan1 天前
2026高职计算机专业学习数据分析指南
学习·数据挖掘·数据分析