#python #numpy #matplotlib
#python #numpy #matplotlib
Вопрос:
Я хочу нарисовать 3D-ГРАФИК своей работы, но ошибка показывает, что аргумент Z должен быть 2-мерным
from mpl_toolkits.mplot3d import Axes3D
figure = plt.figure()
ax = Axes3D(figure)
X = np.arange(0,1,0.01)
Y = np.arange(0,1,0.01)
X,Y = np.meshgrid(X,Y)
M=[]
for i in X:
for j in Y:
NEW_smoothed=holt(Airline_passengers,alpha=i,beta=j)
M.append(sse(new_smoothed[:-2],Airline_passengers.values[2:]))
B=np.array(X)
N=np.array(Y)
Z=np.array(M)
ax.plot_surface(B,N,Z,rstride=1,cstride=1,cmap='rainbow')
plt.show()
Я ожидал 3D-графика
Комментарии:
1. Проверьте тип и форму
X
иY
послеmeshgrid
. Я не думаю, что вам нужен дополнительныйB
N
шаг и . Какова формаZ
? Соответствует ли этоX
? Чегоplot_surface
ожидать?2. M — это список, и я хочу иметь непрерывную графику, чтобы показать взаимосвязь между Xy и Z.Я думаю, ошибка в том, что я не показываю взаимосвязь между xy и z в этом списке
3.
X
аналогично (100,100) массивY
.Z
должно быть таким же. Простой случай был быZ = X Y
. Это должен быть массив (100,100) с одним значением для каждой точки сетки, определеннойX
Y
сеткой и . Я не могу повторить вашM
расчет, но я подозреваю, что он имеетlen(M)
10000.Z=np.array(M).reshape(X.shape)
может сработать.