Как построить координаты (1,2) против времени (0,5) в python - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь построить положение транспортного средства (координаты - x, y) в зависимости от времени (1 с, 2 с, 3 с ...). Я пробовал с matplotlib, но безуспешно. Я новичок в python. Может ли кто-нибудь мне помочь.

Мой код:

import matplotlib.pyplot as plt
import numpy as np

coordinate = [[524.447876,1399.091919], [525.1377563,1399.95105], [525.7932739,1400.767578], [526.4627686,1401.601563],
     [527.2360229,1402.564575], [527.8989258,1403.390381], [528.5689697,1404.224854]]

timestamp =[0,0.05,0.1,0.15,0.2,0.25,0.3]

plt.plot(coordinate,timestamp)

Сюжет выглядит так: Но это неверный. Я поступил неправильно.

enter image description here

Участок должен стать, в частности, меткой времени (1 с), положение транспортного средства (x, y). Так что должна быть одна линия, точно такая же, как траектория движения транспортного средства.

Спасибо.

Ответы [ 3 ]

1 голос
/ 17 июня 2020

Я считаю, что это результат, который вы ищете:

enter image description here

import matplotlib.pyplot as plt
import numpy as np
coordinate = [[524.447876,1399.091919],
              [525.1377563,1399.95105],
              [525.7932739,1400.767578],
              [526.4627686,1401.601563],
              [527.2360229,1402.564575],
              [527.8989258,1403.390381],
              [528.5689697,1404.224854]]
v1 = [y[1] for y in coordinate]
v2 = [y[0] for y in coordinate]
x = [0,0.05,0.1,0.15,0.2,0.25,0.3]

plt.plot(x,v1)
plt.plot(x,v2,'--')
plt.ylim(0,1500)
plt.show()
0 голосов
/ 18 июня 2020

Соответствует ли вам что-то подобное:

import matplotlib.pyplot as plt

coordinates = [
    (524.447876,1399.091919),
    (525.1377563,1399.95105),
    (525.7932739,1400.767578),
    (526.4627686,1401.601563),
    (527.2360229,1402.564575),
    (527.8989258,1403.390381),
    (528.5689697,1404.224854),
]

timestamp = [0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3]

x, y = zip(*coordinates)

ax = plt.axes(projection="3d")
ax.plot(x, y, timestamp);

plt.show()

enter image description here

Matplotlib позволит вам повернуть изображение с помощью мыши, чтобы просмотреть его из различные углы.

0 голосов
/ 17 июня 2020

Привет, я думаю, проблема здесь в том, что вы используете двумерный список, поэтому matplotlib отображает координаты, а не временную метку.

Код:

import matplotlib.pyplot as plt
import numpy as np

coordinate = np.array([[524.447876,1399.091919], [525.1377563,1399.95105], [525.7932739,1400.767578], [526.4627686,1401.601563], [527.2360229,1402.564575], [527.8989258,1403.390381], [528.5689697,1404.224854]])

timestamp =np.array([0,0.05,0.1,0.15,0.2,0.25,0.3])

plt.plot(coordinate)

Вывод: Output-1

Вы должны преобразовать его в одномерный список следующим образом:

coordinate_new = np.array([524.447876,525.1377563,1399.95105, 525.7932739,1400.767578, 526.4627686,1401.601563])
timestamp =np.array([0,0.05,0.1,0.15,0.2,0.25,0.3])
plt.plot(coordinate_new, timestamp)

Тогда вывод будет: Output-2

Надеюсь, я смогу помочь !!

Если вы хотите построить трехмерный график, вот что вы можете сделать:

import matplotlib.pyplot as plt
#importing matplotlib


fig = plt.figure() #adding figure
ax_3d = plt.axes(projection="3d") #addign 3-d axes
coordinate_x = [524.447876, 525.137756, 525.7932739, 526.4627686, 527.2360229, 527.8989258, 528.5689697]
coordinate_y = [1399.091919, 1399.95105,1400.767578,1401.601563,1402.564575,1403.390381,1404.224854]
timestamp =[0,0.05,0.1,0.15,0.2,0.25,0.3]

# defining the variables
ax.plot(coordinate_x, coordinate_y, timestamp)
#plotting them

Вывод:

Output-3

Всего наилучшего!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...