You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Matlab绘制带点的热力图?以转速-扭矩数据为例

Matlab绘制带点样式的强度热力图

问题说明

现有x(转速)、y(扭矩)、z(强度)三组散点数据,需要绘制带点样式的热力图,用z轴数值表示点的强度。之前尝试imagesc未得到预期效果,且现有代码存在变量名不匹配的问题(定义了x/y却调用w_mot/T_mot)。

方案一:直接用散点图实现强度映射

通过scatter函数将z值映射为点的颜色,直接呈现带强度的点样式:

% 替换为你的实际数据
x = rand(1373,1);  % 转速数据
y = rand(1373,1);  % 扭矩数据
z = rand(1373,1)*50;  % 强度数据

figure
% 用z控制点的颜色,设置标记为点样式并填充
scatter(x, y, 20, z, 'filled', 'Marker', '.');
colorbar;  % 显示强度对应的色标
xlabel('转速');
ylabel('扭矩');
title('转速-扭矩-强度散点热力图');
colormap viridis;  % 可替换为jet/parula等颜色映射

方案二:插值热力底图+散点叠加

如果需要同时呈现整体强度分布和原始数据点,可先生成插值热力背景,再叠加散点:

x = rand(1373,1);
y = rand(1373,1);
z = rand(1373,1)*50;

% 生成插值后的连续热力网格
[Xi, Yi] = meshgrid(linspace(min(x), max(x), 200), linspace(min(y), max(y), 200));
SI = scatteredInterpolant(x, y, z);
Ci = SI(Xi, Yi);

figure
% 绘制插值热力底图
imagesc(linspace(min(x), max(x), 200), linspace(min(y), max(y), 200), Ci);
hold on;
% 叠加原始数据点(黑色小点突出位置)
scatter(x, y, 10, 'k', 'Marker', '.');
colorbar;
xlabel('转速');
ylabel('扭矩');
title('带散点叠加的热力图');
colormap jet;
axis tight;
hold off;

关键修正说明

  1. 修复变量名不匹配问题:确保调用的变量与定义的x/y一致;
  2. imagesc本身是绘制二维填充热力图,若需要带点样式,必须结合scatter等散点函数实现;
  3. 可通过调整scatter的第三个参数(点大小)、Marker类型,以及colormap来匹配示例图效果。

内容的提问来源于stack exchange,提问作者Giuseppe_27

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 18:47:25