, если вы настаиваете на том, чтобы не найти минимальное / максимальное значение, которое вы можете сделать:
import numpy as np
import matplotlib.pyplot as plt
d=[1,1,1,4,3,4,3,1]
Xs = d[::2]
Ys = d[1::2]
for i in range(4):
if i < 3:
plt.plot([Xs[i],Xs[i+1]],[Ys[i],Ys[i+1]],'k-',lw=2)
elif i == 3:
plt.plot([Xs[i],Xs[0]],[Ys[i],Ys[0]],'k-',lw=2)
plt.show()
, что дает:
Правильный подход - сначала найти самую левую точку, а затем найти ширину и высоту и передать все 3 в matplotlib.patches.Rectangle
. В случае, если вы получаете правильно отсортированные баллы, вам нужно просто взять (x_1,y_1)
, а затем width=x_4-x_1
, height=y_2-y_1
Простой пример:
import matplotlib.pyplot as plt
import matplotlib.patches as pac
plt.axes()
rectangle = pac.Rectangle((1,1), 50, 20, fc='blue',ec="red")
plt.gca().add_patch(rectangle)
plt.axis('scaled')
plt.show()
, который генерирует: