Похоже, у вас есть что-то вроде этого:
import numpy as np
import matplotlib.pyplot as plt
x = np.random.random((10, 20))
x = x.cumsum(axis=1)
fig, ax = plt.subplots()
for i, row in enumerate(x):
ax.plot(row, i * np.ones_like(row), 'ko')
ax.set_ylim([-0.5, 9.5])
ax.set_yticks(range(10))
ax.invert_yaxis()
plt.show()

Редактировать:
@ EMS совершенно прав, я пропустил довольно ключевой пункт вашего вопроса.
Однако, если у вас есть вложенные списки кортежей, просто преобразуйте их в массив. Это будет трехмерный массив, который вы можете нарезать по мере необходимости для положения х и скорости. Нет абсолютно никакой необходимости генерировать второй набор данных, и matplotlib преобразует все, что вы вводите в него, в массив с нулевыми значениями, поэтому нет снижения производительности.
например.
import numpy as np
data = [[(1, 2), (3, 4)],
[(5, 6), (7, 8)]]
data = np.array(data)
x = data[:,:,0]
velocity = data[:,:,1]
Это дает:
x:
array([[1, 3],
[5, 7]])
velocity:
array([[2, 4],
[6, 8]])