Python中实现二维岩性图插值绘制(离散转连续)
实现连续岩性图的解决方案
散点图仅能展示离散数据点,要生成连续的岩性分布图,核心是对离散岩性数据做空间插值网格化,再通过填色图呈现。以下是具体实现步骤和代码:
方法思路
- 生成覆盖原始数据范围的规则网格(x、y轴的网格化坐标)
- 针对分类岩性数据,用合适的插值方法将离散值映射到网格上(优先选最近邻插值,避免出现非整数岩性值)
- 匹配岩性对应的配色方案,绘制填色图并添加图例说明
完整代码示例
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
相关产品推荐
相关产品推荐

