загрузка файла невозможна через ajax. Вы можете загрузить файл, не обновляя страницу с помощью IFrame. вы можете проверить дальнейшие подробности здесь
UPDATE:
С XHR2 поддерживается загрузка файлов через AJAX. Например. через объект FormData , но, к сожалению, он не поддерживается всеми / старыми браузерами.
Поддержка FormData запускается из следующих версий браузеров для настольных компьютеров. IE 10+, Firefox 4.0+, Chrome 7+, Safari 5+, Opera 12 +
Подробнее см. В ссылке MDN
Вам нужно сгенерировать meshgrid. X, Y и Z должны быть двумерными массивами
import numpy
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
def peaks(x,y):
return x * numpy.sin(y)
fig = plt.figure()
ax = fig.gca(projection='3d')
X = Y= numpy.arange(-3, 3, 0.1).tolist()
X, Y = numpy.meshgrid(X, Y)
Z = []
for i in range(len(X)):
Z.append(peaks(X[i],Y[i]))
ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
cset = ax.contour(X, Y, Z, zdir='z', offset=-8)
cset = ax.contour(X, Y, Z, zdir='x', offset=-8)
cset = ax.contour(X, Y, Z, zdir='y', offset=8)
ax.set_xlabel('X')
ax.set_xlim(-8, 8)
ax.set_ylabel('Y')
ax.set_ylim(-8, 8)
ax.set_zlabel('Z')
ax.set_zlim(-8, 8)
plt.show()
[/g0]
Принимаемый ответ больше не работает. К сожалению, рецензенты отклонили мое предложенное редактирование, которое сделало бы его рабочим. Итак, вот тот же ответ снова, но с небольшими изменениями, необходимыми для его работы в текущей версии matplotlib.
import numpy
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
def peaks(x,y):
return x * numpy.sin(y)
fig = plt.figure()
ax = fig.gca(projection='3d')
X = Y= numpy.arange(-3, 3, 0.1).tolist()
X, Y = numpy.meshgrid(X, Y)
Z = numpy.zeros(X.shape)
for i in range(len(X)):
for j in range(len(Y)):
Z[i,j] = peaks(X[i,j],Y[i,j])
ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
cset = ax.contour(X, Y, Z, zdir='z', offset=-8)
cset = ax.contour(X, Y, Z, zdir='x', offset=-8)
cset = ax.contour(X, Y, Z, zdir='y', offset=8)
ax.set_xlabel('X')
ax.set_xlim(-8, 8)
ax.set_ylabel('Y')
ax.set_ylim(-8, 8)
ax.set_zlabel('Z')
ax.set_zlim(-8, 8)
plt.show()