Хорошо, у меня ушло некоторое время, но было весело делать это.Идея здесь состоит в том, чтобы сначала создать непрерывную path
из координат, которые определяют стены.Далее создайте объект Path
.Теперь вы перебираете каждую точку в DataFrame и затем смотрите, содержит ли созданная Path
эту (x, y) точку, используя contains_point
.Мне также пришлось использовать условие x==55 and (5<y<=55)
в операторе if
, чтобы включить столбец, примыкающий к самой правой стене.
import matplotlib.path as mplPath
import numpy as np
wallPointsX = [5,5,30,30,55,55,5]
wallPointsY = [5,30,30,55,55,5,5]
# Create a continuous path across the wall coordinates
path = np.array([list(i) for i in zip(wallPointsX, wallPointsY)])
Path = mplPath.Path(path)
df = pd.DataFrame(0, index=range(60), columns=range(60))
for x in range(0, 60):
for y in range(0, 60):
if Path.contains_point((x,y)) or (x==55 and (5<y<=55)):
df[x-1][y-1] = 5 #Should only apply inside "walls"
plt.plot(wallPointsX, wallPointsY)
plt.pcolor(df)
Вывод
