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

Python中实现二维岩性图插值绘制(离散转连续)

实现连续岩性图的解决方案

散点图仅能展示离散数据点,要生成连续的岩性分布图,核心是对离散岩性数据做空间插值网格化,再通过填色图呈现。以下是具体实现步骤和代码:

方法思路

  1. 生成覆盖原始数据范围的规则网格(x、y轴的网格化坐标)
  2. 针对分类岩性数据,用合适的插值方法将离散值映射到网格上(优先选最近邻插值,避免出现非整数岩性值)
  3. 匹配岩性对应的配色方案,绘制填色图并添加图例说明

完整代码示例

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import griddata
from matplotlib.colors import ListedColormap

# 提取原始数据
x = df_final['x'].values
y = df_final['y'].values
lithology = y_final  # 取值1-6的岩性数组

# 生成规则网格(可调整resolution控制图的精细度)
resolution = 100
xi = np.linspace(x.min(), x.max(), resolution)
yi = np.linspace(y.min(), y.max(), resolution)
xi, yi = np.meshgrid(xi, yi)

# 对岩性做最近邻插值(适配分类变量)
zi = griddata((x, y), lithology, (xi, yi), method='nearest')

# 定义岩性配色(与原代码保持一致)
colormap = np.array(['blue','green','pink','brown','yellow','white'])
cmap = ListedColormap(colormap)

# 绘制连续填色图
plt.figure(figsize=[15,10])
im = plt.pcolormesh(xi, yi, zi, cmap=cmap, shading='auto')

# 添加颜色条并标注岩性类别
cbar = plt.colorbar(im)
cbar.set_ticks([1,2,3,4,5,6])
cbar.set_ticklabels(['岩性1','岩性2','岩性3','岩性4','岩性5','岩性6'])  # 替换为实际岩性名称

plt.xlabel('X坐标')
plt.ylabel('Y坐标')
plt.title('连续岩性分布图')
plt.show()

关键说明

  • 插值方法:method='nearest'(最近邻)适配分类变量,避免插值出1-6之外的非整数岩性值;若想让边界更平滑,可尝试method='linear',但需后续将插值结果就近取整为1-6的整数。
  • 网格分辨率:resolution数值越大,网格越密,图越平滑,但计算量会相应增加。
  • 配色调整:直接修改colormap数组即可更换岩性对应的颜色。

内容的提问来源于stack exchange,提问作者Bhawesh kumar singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 09:10:32