Итак, у меня есть функция calcY, которая возвращает высоту, если заданы две точки.Я хочу использовать его для расчета трехмерного графика, который я хочу построить.
Я выбираю точки от heightMin до heightMax и radiusMin до radiusMax и использую каждую точку как x, y, а затем вычисляю Y как z.
Код выглядит следующим образом:
#Processing the data
zs = np.zeros((heightMax - heightMin, radiusMax - radiusMin))
for height in range(heightMin, heightMax):
for radius in range(radiusMin, radiusMax):
xs.append(radius)
ys.append(height)
zs[height- heightMin, radius- radiusMin] = calculateY(height, radius)
xs,ys = np.meshgrid(xs,ys)
#Initializing the graph
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
#Plot the graph
ax.plot_surface(xs, ys, zs)
plt.show()
ax.plot_surface(xs, ys, zs)
выдает ошибку " ValueError: несоответствие формы: объекты не могут быть переданы в одну форму "
Я понятия не имею, что делать, чтобы это исправить.
Спасибо за любую помощь.
РЕДАКТИРОВАТЬ
Теперь это работает - сделал массив сnp.arrange ()
#Processing the data
zs = np.zeros((heightMax - heightMin, radiusMax - radiusMin))
xs = np.arange(radiusMin, radiusMax, 1)
ys = np.arange(heightMin, heightMax,1)
xs,ys = np.meshgrid(xs,ys)
for height in range(heightMin, heightMax):
for radius in range(radiusMin, radiusMax):
zs[height- heightMin, radius- radiusMin] = calculateY(height, radius)
#Initializing the graph
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# ax = fig.gca(projection = '3d')
#Plot the graph
ax.plot_wireframe(xs, ys, zs)
plt.show()
Понятия не имею, почему