Я лишь кратко коснулся этого в статье Создание интерактивных тепловых карт для петрофизических и геологических данных с использованием Plotly и Python и считаю, что он все еще нуждается в дальнейшем обсуждении. Однако на этот раз я углублюсь в детали и представлю небольшой, почти полный код.

  • Сначала импортировал нужные библиотеки: plotly, pandas и pykrige. Plotly — это библиотека для создания интерактивных графиков, pandas — это библиотека для обработки и анализа данных, а pykrige — это библиотека для пространственной интерполяции с использованием кригинга.
  • Во-вторых, загрузили петрофизические и геологические данные из CSV-файла с помощью pandas. Данные содержат координаты (x, y) и значения (z) нескольких переменных, таких как пористость, проницаемость, плотность и т. д. Использование функции pd.read_csv() для загрузки данных в фрейм данных pandas.
  • В-третьих, используйте pykrige для проведения обычного кригинга данных. Кригинг — это метод пространственной интерполяции, который оценивает значение переменной в неизвестном местоположении на основе значения в известном местоположении. Он также обеспечивает оценку неопределенности или дисперсии интерполированных значений. Используйте класс OrdinaryKriging() для создания объекта кригинга и метод execute() для интерполяции сетки точек. Получите два массива: один для интерполированных значений (z) и один для дисперсии (ss).
  • В-четвертых, используйте plotly для создания интерактивной тепловой карты из интерполированных значений. Тепловая карта — это тип графика, который показывает изменение переменной в виде цветового градиента на двумерной плоскости. Используйте функцию go.Heatmap() для создания трассировки тепловой карты и функцию go.Figure() для создания объекта изображения. Также добавлены некоторые параметры макета, такие как заголовок, метки осей, цветовая шкала и т. д. Я использую метод fig.show() для отображения изображения в веб-браузере.
  • В-пятых, добавлена ​​еще одна трассировка тепловой карты, чтобы показать дисперсию интерполированных значений. Это может помочь оценить надежность или достоверность интерполяции. Используйте другую функцию go.Heatmap() с другой цветовой шкалой и непрозрачностью. Также добавлена ​​легенда, чтобы различать две тепловые карты. Используйте метод fig.add_trace(), чтобы добавить к изображению вторую трассировку.

Вот код

# Import libraries
import plotly.graph_objects as go
import pandas as pd
from pykrige import OrdinaryKriging
import numpy as np
# Load data
df = pd.read_csv(“data.csv”)
# Perform ordinary kriging
OK = OrdinaryKriging(df.x.values, df.y.values, df.z.values)
gridx = np.linspace(df.x.min(), df.x.max(), 100)
gridy = np.linspace(df.y.min(), df.y.max(), 100)
z, ss = OK.execute(“grid”, gridx, gridy)
# Create heat map of interpolated values
fig = go.Figure()
fig.add_trace(go.Heatmap(x=gridx, y=gridy, z=z,
 colorscale=”Viridis”,
 name=”Interpolated Values”))
fig.update_layout(title=”Heat Map of Petrophysical and Geological Data”,
 xaxis_title=”X”,
 yaxis_title=”Y”)
# Create heat map of variance
fig.add_trace(go.Heatmap(x=gridx, y=gridy, z=ss,
 colorscale=”Hot”,
 opacity=0.5,
 name=”Variance”))
fig.update_layout(legend=dict(x=0.8, y=0.9))
# Show figure
fig.show()

удачи