2016-04-19 2 views
0

У меня есть решатель, который решает систему уравнений из 3 переменных. На каждой итерации он имеет новое предположение о всех трех переменных. Догадки по итерациям выглядят так:Matplotlib: Движение графика в 3D

array([[ 0.86063431, 0.07119279, 1.70377142], 
     [ 0.86391084, 0.07014899, 1.72184785], 
     [ 0.86332177, 0.069444 , 1.71182579], 
     [ 0.86192988, 0.06913941, 1.69818289], 
     [ 0.86166436, 0.06916367, 1.69527615]]) 

(Здесь для 5 итераций). Я хотел бы построить их с помощью matplotlib. Я думал о наличии точки для каждой из этих координат и имел линию, соединяющую их, чтобы показать порядок координат.

Это хороший способ визуализации этого? Как мне это сделать, используя matplotlib?

ответ

1

Вы можете построить это как 3D траектории с Matplotlib: импорт matplotlib.pyplot в PLT из mpl_toolkits.mplot3d импорта Axes3D импорта NumPy как нп

points = np.array([[ 0.86063431, 0.07119279, 1.70377142], 
        [ 0.86391084, 0.07014899, 1.72184785], 
        [ 0.86332177, 0.069444 , 1.71182579], 
        [ 0.86192988, 0.06913941, 1.69818289], 
        [ 0.86166436, 0.06916367, 1.69527615]]).T 

fig = plt.figure() 
ax = fig.add_subplot(111, projection = '3d') 
ax.plot(points[0], points[1], points[2], marker = 'x') 
ax.scatter(*points.T[0], color = 'red') 
plt.show() 
+0

Есть ли способ, чтобы показать направление? Всякий раз, когда я выделяю одну из точек (например, используя 'marker = 'x'', matplotlib больше не связывает его с другими точками с линией. – FooBar

+0

Один из способов добавить строку, подобную этой (показать первая точка в траектории): 'ax.scatter (* points.T [0])' (возможно, изменив свойства маркера, чтобы сделать его отличным от других) – sulkeh

+0

Я отредактировал код, чтобы точка стала видимой. вопрос о том, как выглядят маркеры. Порядок, в котором они отображаются, не всегда очевиден, и его можно изменить с помощью команды zorder. Однако в 3D это не очевидно, как это работает ... Если это ответит на ваш вопрос, примите ответ – sulkeh

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