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

文章目录

MATLAB 提供了 丰富且灵活的数据可视化工具 ,覆盖从基础二维曲线到复杂三维图形、动态交互可视化的全场景需求。以下按「基础绘图→进阶可视化→定制化技巧→实战场景」分层讲解,附可直接运行的代码示例:

一、核心基础:二维可视化(最常用)

二维绘图是数据可视化的基础,适用于展示一维/二维数据的趋势、分布、对比关系。

1. 基础曲线:plot(趋势展示)

用于绘制单/多条曲线,适合展示「自变量-因变量」的连续趋势(如时间序列、函数曲线)。

matlab 复制代码
% 示例:绘制正弦/余弦曲线,自定义样式
x = 0:0.01:2*pi;  % 生成等间距自变量
y1 = sin(x);
y2 = cos(x);

figure('Color','w');  % 新建白色背景窗口
plot(x, y1, 'r-', 'LineWidth', 1.5, 'DisplayName','sin(x)');  % 红色实线
hold on;  % 保留当前画布,继续绘图
plot(x, y2, 'b--', 'LineWidth', 1.5, 'DisplayName','cos(x)'); % 蓝色虚线
xlabel('x (弧度)','FontSize',12);  % x轴标签(字号12)
ylabel('y值','FontSize',12);       % y轴标签
title('sin(x) & cos(x) 曲线','FontSize',14);  % 标题
legend('Location','best');  % 图例(自动选最优位置)
grid on;  % 显示网格
xlim([0, 2*pi]);  % 限定x轴范围
hold off;
2. 分布可视化:直方图/密度图(统计特征)

用于展示数据的分布特征,常见函数:histogram(直方图)、ksdensity(核密度估计)。

matlab 复制代码
% 示例:正态分布数据的分布可视化
data = randn(1000,1);  % 生成1000个正态分布随机数

figure('Color','w');
subplot(1,2,1);  % 1行2列,第1个子图
histogram(data, 'BinWidth',0.5, 'FaceColor','#1f77b4', 'EdgeColor','w');
title('直方图','FontSize',12);
xlabel('数据值'); ylabel('频数');

subplot(1,2,2);  % 第2个子图
[f, xi] = ksdensity(data);  % 核密度估计
plot(xi, f, 'r-', 'LineWidth',1.5);
title('核密度曲线','FontSize',12);
xlabel('数据值'); ylabel('概率密度');
3. 对比可视化:柱状图/条形图(分类数据)

用于对比不同类别数据的数值大小,常见函数:bar(柱状图)、barh(横向条形图)。

matlab 复制代码
% 示例:多组分类数据对比
categories = {'A类','B类','C类','D类'};
data1 = [12, 25, 18, 30];  % 第一组数据
data2 = [8, 20, 22, 25];   % 第二组数据

figure('Color','w');
bar(categories, [data1; data2]', 'Width',0.8);  % 分组柱状图(宽度0.8)
colormap(parula);  % 设置配色
title('不同类别数据对比','FontSize',12);
ylabel('数值');
legend('组1','组2','Location','northwest');
4. 关联可视化:散点图(变量相关性)

用于展示两个变量的关联关系,函数:scatter(基础散点)、scatter3(三维散点)。

matlab 复制代码
% 示例:带颜色/大小编码的散点图(展示3维信息)
x = rand(100,1);
y = rand(100,1);
z = x + y;  % 第三维信息(用颜色表示)
size_val = z * 50;  % 点大小(用大小表示)

figure('Color','w');
scatter(x, y, size_val, z, 'filled');  % filled:填充点
colorbar;  % 显示颜色条(对应z值)
xlabel('X'); ylabel('Y');
title('散点图(颜色/大小编码额外信息)');

二、进阶可视化:三维图形

适合展示三维空间数据(如曲面、体积、三维曲线)。

1. 三维曲线:plot3
matlab 复制代码
% 示例:螺旋线
t = 0:0.01:10*pi;
x = sin(t);
y = cos(t);
z = t;

figure('Color','w');
plot3(x, y, z, 'LineWidth',1.5);
xlabel('X'); ylabel('Y'); zlabel('Z');
title('三维螺旋线');
grid on;
2. 曲面图:surf / mesh(网格图)
matlab 复制代码
% 示例:绘制z = sin(√(x²+y²))/√(x²+y²) 曲面
[X,Y] = meshgrid(-5:0.1:5, -5:0.1:5);  % 生成网格坐标
R = sqrt(X.^2 + Y.^2) + eps;  % 避免除以0
Z = sin(R)./R;

figure('Color','w');
surf(X, Y, Z);  % 填充曲面
shading interp;  % 平滑着色(消除网格线)
colorbar;  % 颜色条(对应Z值)
xlabel('X'); ylabel('Y'); zlabel('Z');
title('三维曲面图');
3. 体积可视化:slice(切片图)

适合展示三维体数据(如医学影像、流体仿真):

matlab 复制代码
% 示例:三维体数据的切片可视化
[X,Y,Z] = meshgrid(-2:0.2:2, -2:0.2:2, -2:0.2:2);
V = X.^2 + Y.^2 + Z.^2;  % 体数据(每个坐标点的数值)

figure('Color','w');
slice(X,Y,Z,V, [-1,0,1], [-1,0,1], [-1,0,1]);  % 在x/y/z轴的-1/0/1位置切片
colorbar;
xlabel('X'); ylabel('Y'); zlabel('Z');
title('三维体数据切片图');

三、可视化定制化技巧(提升图表美观度)

MATLAB 支持精细化定制图表样式,核心技巧如下:

1. 样式统一设置
matlab 复制代码
% 全局样式(一次设置,所有图生效)
set(0, 'DefaultFigureColor','w');  % 所有图背景为白色
set(0, 'DefaultLineLineWidth',1.2);  % 所有线条宽度1.2
set(0, 'DefaultTextFontSize',11);    % 所有文字字号11
set(0, 'DefaultAxesFontName','SimHei');  % 支持中文(需系统有该字体)
2. 颜色与配色
  • 内置配色:colormap(parula)(默认)、colormap(jet)colormap(viridis)(推荐,色盲友好);
  • 自定义颜色:用RGB值(如 [0.2 0.4 0.6])或十六进制(如 #1f77b4)。
3. 图例/标签优化
matlab 复制代码
legend({'曲线1','曲线2'}, 'FontSize',10, 'Box','off');  % 关闭图例边框
xlabel('时间 (s)','FontWeight','bold');  % 加粗标签
ylabel('电压 (V)','Rotation',0);  % 标签水平显示(默认垂直)
4. 导出高清图片
matlab 复制代码
% 导出为PNG(300dpi),适合论文/报告
print(gcf, 'figure_name.png', '-dpng', '-r300');
% 导出为矢量图(EPS,无失真)
print(gcf, 'figure_name.eps', '-depsc');

四、实战场景示例

场景1:时间序列数据可视化(多指标对比)
matlab 复制代码
% 模拟传感器时间序列数据
time = 1:100;
temp = 25 + 5*sin(time/10) + randn(size(time));  % 温度
humidity = 60 + 10*cos(time/15) + randn(size(time));  % 湿度

figure('Color','w');
ax1 = gca;  % 主坐标轴
plot(time, temp, 'r-', 'LineWidth',1.5, 'DisplayName','温度');
xlabel('时间 (min)');
ylabel('温度 (℃)','Color','r');
ax1.YColor = 'r';  % 主坐标轴颜色
grid on;

ax2 = axes('Position',ax1.Position, 'XAxisLocation','bottom', 'YAxisLocation','right', 'Color','none');
plot(ax2, time, humidity, 'b-', 'LineWidth',1.5, 'DisplayName','湿度');
ylabel(ax2, '湿度 (%)','Color','b');
ax2.YColor = 'b';  % 次坐标轴颜色
legend([ax1,ax2], 'Location','best');
title('温湿度时间序列');
场景2:地理数据可视化(带坐标的散点)
matlab 复制代码
% 模拟经纬度数据(如城市点位)
lat = [39.90, 31.23, 23.13, 116.40];  % 纬度
lon = [116.40, 121.47, 113.27, 39.90];  % 经度
value = [500, 800, 600, 900];  % 每个点位的数值(颜色编码)

figure('Color','w');
scatter(lon, lat, 200, value, 'filled');
colorbar;
xlabel('经度'); ylabel('纬度');
title('城市点位数值分布');
% 标注点位名称
text(lon, lat, {'北京','上海','广州','测试点'}, 'HorizontalAlignment','center');

五、关键总结

  1. 选对绘图函数 :根据数据类型(连续/分类/三维)选择对应函数(plot/bar/surf 等);
  2. 信息最大化:用颜色、大小、子图、双坐标轴等编码更多维度信息;
  3. 样式标准化:统一字体、颜色、线宽,导出高清格式;
  4. 交互增强 :可结合 datacursormode(数据游标)、zoom(缩放)、pan(平移)提升交互性。

如果需要针对特定场景(如机器学习结果可视化、信号处理频谱图、图像处理)的示例,可以告诉我,我会补充对应代码!

相关推荐
yumgpkpm3 小时前
数据可视化AI、BI工具,开源适配 Cloudera CMP 7.3(或类 CDP 的 CMP 7.13 平台,如华为鲲鹏 ARM 版)值得推荐?
人工智能·hive·hadoop·信息可视化·kafka·开源·hbase
以梦为马mmky4 小时前
25上海应用技术大学通信考情数据分析
数据分析·通信考研·信号与系统·上海应用技术大学
学术小白人5 小时前
第一轮征稿!2026年数字能源与转换技术国际研讨会(DECT 2026)
数据分析·能源·制造·教育·rdlink研发家·数字媒体
q***65698 小时前
Python大数据可视化:基于大数据技术的共享单车数据分析与辅助管理系统_flask+hadoop+spider
大数据·python·信息可视化
观远数据10 小时前
数据可视化实战指南,观远BI解锁5大核心图表的力量
大数据·人工智能·信息可视化·金融·数据分析
Y***K43410 小时前
Vue数据可视化应用
前端·vue.js·信息可视化
软件算法开发17 小时前
基于秃鹰搜索优化的LSTM深度学习网络模型(BES-LSTM)的一维时间序列预测算法matlab仿真
深度学习·算法·matlab·lstm·时间序列预测·秃鹰搜索优化·bes-lstm
子不语18018 小时前
Matlab(一)——绘图
开发语言·matlab
七夜zippoe19 小时前
基于AutoGen搭建数据分析智能体:自动处理Excel并生成可视化报告
数据分析·autogen·多智能体系统·excel自动化·可视化报告