2016-01-20 3 views
1

У меня есть 4 списка X и Y, которые я рисую отдельно с помощью matplotlib.pyplot, то есть point1 [x1, y1], point2 [x2, y2], point3 [x3, y3] и point4 [x4, y4]. То, что я пытаюсь сделать в сюжете, - это подключить point1 к point2, point2 to point3 и т. Д., Пока все 4 точки не будут связаны, что будет представлять квадрат в моем случае. Данные для динамических смещений x и y для прямоугольного насоса, над которым я работаю, показывают, если в лунном баке судна превышено ограничение перемещения.Соединительные линии между точками, нанесенными в Matplotlib

Вот код, который я до сих пор, что дает мне следующий участок и участок генерироваться:

Generated plot

## SSLP displacement time histories to be plotted 
point1 = (3.61, 4, -3) 
point2 = (3.61, -4, -3) 
point3 = (-3.61, -4, -3) 
point4 = (-3.61, 4, -3) 
SSLPXPoint1 = SSLP.TimeHistory('X', 1, objectExtra=OrcFxAPI.oeBuoy(point1)) 
SSLPYPoint1 = SSLP.TimeHistory('Y', 1, objectExtra=OrcFxAPI.oeBuoy(point1)) 
SSLPXPoint2 = SSLP.TimeHistory('X', 1, objectExtra=OrcFxAPI.oeBuoy(point2)) 
SSLPYPoint2 = SSLP.TimeHistory('Y', 1, objectExtra=OrcFxAPI.oeBuoy(point2)) 
SSLPXPoint3 = SSLP.TimeHistory('X', 1, objectExtra=OrcFxAPI.oeBuoy(point3)) 
SSLPYPoint3 = SSLP.TimeHistory('Y', 1, objectExtra=OrcFxAPI.oeBuoy(point3)) 
SSLPXPoint4 = SSLP.TimeHistory('X', 1, objectExtra=OrcFxAPI.oeBuoy(point4)) 
SSLPYPoint4 = SSLP.TimeHistory('Y', 1, objectExtra=OrcFxAPI.oeBuoy(point4)) 

# setup plot 
caseName = os.path.splitext(info.modelFileName)[0] 
point1Plot = [3.61, 4] 
point2Plot = [3.61, -4] 
point3Plot = [-3.61, -4] 
point4Plot = [-3.61, 4] 
vesselPointsX = [90.89, 100.89, 100.89, 90.89, 90.89] 
vesselPointsY = [5, 5, -5, -5, 5] 
moonpoolCLX = [89, 103] 
moonpoolCLY = [0, 0] 
fig = plt.figure(figsize=(20, 15)) 
ax = fig.add_subplot(1, 1, 1) 
plt.plot(vesselPointsX, vesselPointsY, 'r', lw=2, label='OCV Moonpool Limits') 
plt.plot(moonpoolCLX, moonpoolCLY, 'k--', label='Moonpool CL') 
plt.plot(SSLPXPoint1, SSLPYPoint1, 'k') 
plt.plot(SSLPXPoint2, SSLPYPoint2, 'k') 
plt.plot(SSLPXPoint3, SSLPYPoint3, 'k') 
plt.plot(SSLPXPoint4, SSLPYPoint4, 'k') 
ax.set_title("SSLP Maximum Offsets Inside Moonpool for {}".format(caseName), fontsize=20) 
ax.set_xlabel('Distance Along OCV from Stern [m]', fontsize=15) 
ax.set_ylabel('Distance from Moonpool Centerline, (+) Towards Portside [m]', fontsize=15) 
ax.set_xlim(89, 103) 
ax.set_ylim(-7, 7) 
plt.gca().set_aspect('equal', adjustable='box') 
plt.draw() 
plt.legend() 
plt.tight_layout() 
plt.show() 

Любая помощь будет принята с благодарностью.

Спасибо,

Brian

+2

Создайте список X точек и второго списка Y точек и 'plt.plot (list_x, list_y)' это должно работать. –

+0

Спасибо! Все прошло отлично. – Brian

ответ

1

Это должно помочь вам. Внесите свои изменения.

from matplotlib.pyplot import plot, show 
plot([SSLPXPoint1, SSLPXPoint2], [SSLPYPoint1, SSLPYPoint2]) 
plot([SSLPXPoint3, SSLPXPoint2], [SSLPYPoint3, SSLPYPoint2]) 
plot([SSLPXPoint3, SSLPXPoint4], [SSLPYPoint3, SSLPYPoint4]) 
show() 

Отредактировано, потому что предыдущий соединял все точки.

+0

Этот код - именно то, что мне нужно. Спасибо! – Brian

+0

Добро пожаловать, я отредактировал, но потом понял, что оба работают. :) –

+0

Я тестировал оба, и вы правы. Результаты идентичны. Замечательно знать больше, чем один способ сделать это, хотя! – Brian

Смежные вопросы