Как изменить цвет определенного ребра для полигона в python? - PullRequest
0 голосов
/ 26 января 2020

Есть многоугольник, и мне интересно, как я могу изменить цвет определенного края, как показано на рисунке ниже.

enter image description here

import matplotlib.pyplot as plt
import numpy as np


## -----------------------Initialize Geometry----------------------- 
pixels = 600
my_dpi = 100

coord = [[-150,-200],[300,-200],[300,0],[150,200],[-150,200]]


fig = plt.figure(figsize=( pixels/my_dpi,  pixels/my_dpi), dpi=my_dpi)  

plt.axes([0,0,1,1])

rectangle = plt.Rectangle((-300, -300), 600, 600, fc='k')
plt.gca().add_patch(rectangle)
polygon = plt.Polygon(coord,fc='w')
plt.gca().add_patch(polygon)
plt.axis('off')
plt.axis([-300,300,-300,300])

plt.savefig('figure1/5.jpg',dpi=my_dpi)

1 Ответ

1 голос
/ 26 января 2020

Самый простой способ сделать это - просто провести линию между двумя соответствующими вершинами многоугольника, т.е.

plt.plot([coords[0,0], coords[-1,0]], [coords[0,1], coords[-1,1]], color='r', lw=5)

даст вам

enter image description here

Хотя я рекомендую добавить к многоугольнику границу с той же шириной, что и у этой линии, того же цвета, что и цвет лица:

polygon = plt.Polygon(coord,fc='w',ec='w',lw=5)

Как способ сделать красную линию появляются грипп sh. Вы можете изменить, какой край будет окрашен, вы просто измените индексы coords[i,j] в plt.plot(), и пока индексы смежны (с переносом - так, что последний индекс и первый индекс смежны), нарисованная линия будет краем, а не диагональ.

Также обратите внимание, что вы можете сократить команду прорисовки, используя срезы или вспомогательную функцию, но я пренебрег этим ради ясности.

...