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

如何利用x轴距离、z轴深度与饱和度创建蓝色梯度热力图

新手入门:基于饱和度的深度-距离热力图实现

准备工作

先确保你安装了matplotlib和numpy,打开终端输入:

pip install matplotlib numpy

完整实现代码

下面是可直接运行的示例代码,包含数据生成、颜色配置和绘图:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap

# 1. 生成示例数据(替换成你的真实数据即可)
# x方向距离:0到100米,取50个采样点
x = np.linspace(0, 100, 50)
# z方向深度:0到50米(数值越大代表深度越深),取30个采样点
z = np.linspace(0, 50, 30)
# 创建x和z的网格矩阵
X, Z = np.meshgrid(x, z)
# 生成模拟的饱和度值(0-100%),用正弦函数生成渐变效果
saturation = 50 + 50 * np.sin(X/20 + Z/10)
# 确保饱和度值被限制在0-100范围内
saturation = np.clip(saturation, 0, 100)

# 2. 自定义蓝色渐变映射:10个等级对应10个饱和度区间
# 从最深蓝到最浅蓝的10种颜色(十六进制码)
blue_shades = [
    '#000080', '#0000A0', '#0000C0', '#0000E0', 
    '#1010FF', '#3030FF', '#5050FF', '#7070FF', 
    '#9090FF', '#B0B0FF'
]
# 创建分段颜色映射
cmap = LinearSegmentedColormap.from_list("saturation_blue", blue_shades, N=10)

# 3. 绘制热力图
plt.figure(figsize=(10, 6))
# 用pcolormesh绘制网格热力图,传入x、z网格和饱和度数据
heatmap = plt.pcolormesh(X, Z, saturation, cmap=cmap, vmin=0, vmax=100)

# 设置坐标轴标签
plt.xlabel('X方向距离 (米)')
plt.ylabel('深度 (米)')
# 反转y轴,让深度大的区域显示在图表下方(符合常规认知)
plt.gca().invert_yaxis()

# 添加颜色条,设置刻度对应10个饱和度区间
cbar = plt.colorbar(heatmap, ticks=np.arange(0, 101, 10))
cbar.set_label('饱和度 (%)')
# 给颜色条刻度添加区间标签
cbar.set_ticklabels([
    '0-10', '10-20', '20-30', '30-40', '40-50',
    '50-60', '60-70', '70-80', '80-90', '90-100'
])

# 添加图表标题
plt.title('深度-距离饱和度热力图')

# 显示图形
plt.show()

关键部分解释

  • 数据替换:如果有真实的CSV/Excel数据,用pandas读取后替换示例数据部分即可(比如pd.read_csv("your_data.csv")提取x、z、saturation列)。
  • 颜色配置:blue_shades列表里的十六进制颜色可自行调整,只要保持从深到浅的蓝色渐变,就能匹配饱和度区间。
  • 坐标轴调整:invert_yaxis()是为了让深度数值越大,位置越靠下,符合现实中“深度向下增加”的逻辑。

扩展提示

  • 如果你的数据是离散点(非规则网格),可以改用plt.tricontourf绘制不规则热力图。
  • 调整figsize参数可以改变图表的整体尺寸。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 19:40:37