Ограничить контурные линии до границы граничного массива вогнутой оболочки - PullRequest
1 голос
/ 17 апреля 2020

Я сгенерировал контурную диаграмму вокруг нерегулярного набора точечных данных 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()`

Контурный график, который должен быть ограничен многоугольником вогнутой оболочки:

Contour plot which needs to be limited by a concavehull polygon

Теперь я могу разработать маскирующий полигон используя следующий код:

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')

Masking polygon

Теперь мне просто нужна помощь в применении этого многоугольника маскировки для ограничения контуров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...