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

如何在MATLAB中绘制多重叠折线的热力图及均值、中位数、众数曲线?

温度剖面数据的量化可视化(Matlab实现)

我有300组温度随海拔变化的剖面数据,不想只用普通折线图展示,希望用更具量化性的可视化方式。我发现下图的效果很实用,想实现这种样式,同时还要在图中添加温度的均值、中位数以及众数曲线。

目标可视化效果

实现方案

通过计算每个海拔高度的统计量(分位数、均值、中位数、众数),用填充区间展示数据分布范围,叠加关键统计曲线实现量化可视化,以下是完整Matlab代码:

% 生成示例数据
numProfiles = 300;    % 温度剖面数量
numAltitudes = 101;   % 海拔点数(0km到100km,步长1km)
altitude = 0:1:100;   % 海拔值(单位:km)
temperatures = zeros(numAltitudes, numProfiles);

% 生成带分段波动的温度数据
baseTemperature = 200 + altitude' * 3;     % 基准温度剖面
for i = 1:numProfiles
    variation = zeros(numAltitudes, 1);
    % 不同海拔区间设置不同波动幅度
    for j = 1:numAltitudes
        if altitude(j) < 20
            variation(j) = randn * 50;          % 大波动
        elseif altitude(j) < 50
            variation(j) = randn * 10;          % 中波动
        elseif altitude(j) < 70
            variation(j) = randn * 3;           % 小波动
        else
            variation(j) = randn * 1;           % 极小波动
        end
    end
    temperatures(:, i) = baseTemperature + variation;
end

% ========== 计算统计量 ==========
temp_mean = mean(temperatures, 2);          % 各海拔温度均值
temp_median = median(temperatures, 2);      % 各海拔温度中位数
temp_mode = mode(temperatures, 2);          % 各海拔温度众数
% 计算分位数:5%、25%、75%、95%,用于绘制波动区间
temp_prctile = prctile(temperatures, [5,25,75,95], 2);
p5 = temp_prctile(:,1);
p25 = temp_prctile(:,2);
p75 = temp_prctile(:,3);
p95 = temp_prctile(:,4);

% ========== 绘制量化可视化图 ==========
figure('Color','w');
hold on; box on;

% 绘制外层波动区间(5%-95%分位数),半透明浅灰色
fill([p95; flipud(p5)], [altitude; flipud(altitude)], [0.9,0.9,0.9], 'FaceAlpha',0.3, 'EdgeColor','none');
% 绘制内层波动区间(25%-75%分位数),半透明深灰色
fill([p75; flipud(p25)], [altitude; flipud(altitude)], [0.7,0.7,0.7], 'FaceAlpha',0.5, 'EdgeColor','none');

% 绘制统计曲线
plot(temp_mean, altitude, 'r-', 'LineWidth',2, 'DisplayName','均值');
plot(temp_median, altitude, 'b--', 'LineWidth',2, 'DisplayName','中位数');
plot(temp_mode, altitude, 'g-.', 'LineWidth',2, 'DisplayName','众数');

% 设置图属性
xlabel('温度');
ylabel('海拔(km)');
title('温度剖面量化可视化');
legend('Location','best');
set(gca, 'YDir','reverse'); % 反转Y轴,让海拔从低到高显示

关键说明

  • 区间填充:用prctile计算分位数,通过fill绘制半透明区间,直观展示不同海拔温度的分布离散程度,内层25%-75%分位数代表数据的核心分布,外层5%-95%代表整体波动范围
  • 统计曲线:用不同颜色、线型区分均值、中位数、众数,清晰展示数据的集中趋势
  • 坐标轴优化:反转Y轴方向,符合海拔从地面(0km)到高空(100km)的常规展示逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:14:56