3D сюжет с 2D массивом python matplotlib
У меня есть 2 1D массива со значениями x и y, а также 2D массив со значениями z для каждой точки, где столбцы соответствуют значениям x, а строки - значениям y. Есть ли способ получить plot_surface с этими данными? когда я пытаюсь сделать это, это не возвращает мне заговор. Вот код: (Calculate_R - функция, которую я сделал для программы)
x=np.arange(0,10,1)
y=np.arange(0,1,0.2)
lx= len(x)
ly=len(y)
z=np.zeros((lx,ly))
for i in range(lx):
for j in range(ly):
z[i,j]=calculate_R(y[j],x[i])
fig = plt.figure()
ax = Axes3D(fig)
x, y = np.meshgrid(x, y)
ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap='hot')
1 ответ
Решение
Ты забыл позвонить plt.show()
для отображения вашего сюжета.
Обратите внимание, что вы могли бы использовать векторизацию Nu mPy для ускорения расчета z
:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d.axes3d import Axes3D
x = np.arange(0,10,1)
y = np.arange(0,1,0.2)
xs, ys = np.meshgrid(x, y)
# z = calculate_R(xs, ys)
zs = xs**2 + ys**2
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(xs, ys, zs, rstride=1, cstride=1, cmap='hot')
plt.show()
Здесь я использовал простую функцию, так как вы не предоставили полностью рабочий пример.