Как я могу сделать простую 3D-линию с Matplotlib?
Я новичок в python. Я хочу создать строки, которые я получаю из массива в 3D.
Вот код:
VecStart_x = [0,1,3,5]
VecStart_y = [2,2,5,5]
VecStart_z = [0,1,1,5]
VecEnd_x = [1,2,-1,6]
VecEnd_y = [3,1,-2,7]
VecEnd_z =[1,0,4,9]
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot([VecStart_x ,VecEnd_x],[VecStart_y,VecEnd_y],[VecStart_z,VecEnd_z])
plt.show()
Axes3D.plot()
Я всегда получаю эту ошибку:
ValueError: третий arg должен быть строкой формата
Я ценю вашу помощь.
Ответы
Ответ 1
Думаю, вы хотите построить 4 строки. Затем вы можете попробовать
for i in range(4):
ax.plot([VecStart_x[i], VecEnd_x[i]], [VecStart_y[i],VecEnd_y[i]],zs=[VecStart_z[i],VecEnd_z[i]])
Как предложил @Nicolas, взгляните на галерею matplotlib.
Ответ 2
Галерея - отличная отправная точка, чтобы узнать примеры:
http://matplotlib.org/gallery.html
Здесь приведен пример 3D-графика:
http://matplotlib.org/examples/mplot3d/lines3d_demo.html
Вы видите, что вам нужно перейти к функции вектора ax.plot 3.
Фактически вы передаете список списков.
Я не знаю, что вы имеете в виду под заголовком "Начало и конец", но следующая строка должна работать:
ax.plot(VecStart_x + VecEnd_x, VecStart_y + VecEnd_y, VecStart_z +VecEnd_z)
Здесь я суммирую подсписку (конкатенацию), чтобы иметь только один список по оси.