Я сгенерировал контурную диаграмму вокруг нерегулярного набора точечных данных XY и хотел бы ограничить отображение линий контура в пределах вогнутого многоугольника. Изображение ниже показывает, что контуры теряют актуальность за пределами вогнутой формы корпуса.
Сначала мне нужно несколько советов о том, как создать массив вогнутых оболочек из имеющегося у меня набора данных XY, а затем мне нужно несколько советов о том, как затем применить маску, чтобы ограничить отображение, чтобы показывать только контуры внутри массив вогнутых оболочек.
from matplotlib import pyplot as plt
import numpy as np
# Create Contour Plot
plt.style.use('seaborn-white')
# Create mesh from x-y data
x = df['X'].values.tolist()
y = df['Y'].values.tolist()
b = sort_by_delay['Time'].values.tolist()
levs = range(round(Min_Time, -2), round(Max_Time, -2), 100)
fig=plt.figure()
ax1 = fig.add_subplot(111)
ax1.tricontour(x, y, b, levs, linewidths=0.25, colors='red')
#plot datapoints
plt.scatter(x,y,s=0.5, Label="Drill hole")
plt.axis('equal')
ax1.set_ylabel('Y-Coordinate')
ax1.set_xlabel('X-Coordinate')
plt.show()`
Контурный график, который должен быть ограничен многоугольником вогнутой оболочки:
Теперь я могу разработать маскирующий полигон используя следующий код:
import pandas as pd
from descartes import PolygonPatch
import matplotlib.pyplot as plt
import alphashape
from datetime import datetime
Input_data_dataframe = pd.read_excel( r'C:\Users\data.xlsx')
columns = ['X', 'Y']
df = Input_data_dataframe[columns]
records = df. to_records(index=False)
points = list(records)
alpha = 0.95 * alphashape.optimizealpha(points)
hull = alphashape.alphashape(points, alpha)
hull_pts = hull.exterior.coords.xy
fig, ax = plt.subplots()
ax.scatter(hull_pts[0], hull_pts[1], color='red')
ax.add_patch(PolygonPatch(hull, fill=False, color='green'))
plt.axis('equal')
plt.show()
plt.savefig('Masking_shape_0.95.png')
Теперь мне просто нужна помощь в применении этого многоугольника маскировки для ограничения контуров.