coordinates = [(x, y, x1, y1, x2, y2, etc.), (x3, y3, x4, y4, etc.)].
Вот все координаты: https://pastebin.com/raw/uj71Wz0U.
Задача состоит в том, чтобы найти все безхордовые циклы в фигура. Надо учитывать, что хорду можно проводить не только между точками графика, но и, например, от середины одной линии до середины другой.
Вы следует также учитывать, что аккорд может состоять из нескольких строк, как вы можете видеть на картинке ниже
Таких циклов в моем рисунке всего 15:

Я пробовал использовать бескордовый loops из networkx, но пока не нашел подходящего метода конкретно для моей ситуации.
Вот блок кода, который поможет построить все линии по координатам, которые я указано выше:
# Create coordinate lists for each pair of points
x_coords = []
y_coords = []
all_connections = []
for coord_set in coords:
x_pair = []
y_pair = []
connections_pair = []
for i in range(len(coord_set) // 2 - 1):
x1, y1 = coord_set[2*i], coord_set[2*i+1]
x2, y2 = coord_set[2*i+2], coord_set[2*i+3]
x_pair.extend([x1, x2])
y_pair.extend([y1, y2])
connections_pair.append(((x1, y1), (x2, y2))))
all_connections.append(((x1, y1), (x2, y2))))
x_coords.append(x_pair)
y_coords.append(y_pair)
print(all_connections)
# Plot the graph
For i in range(len(x_coords)):
plt.plot(x_coords, y_coords, marker='o')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Line Chart')
plt.grid(True)
plt.show()
Подробнее здесь: https://stackoverflow.com/questions/782 ... -a-drawing