Znalazłem w sumie chyba rozwiązanie, tj. http://stackoverflow.com/questions/13240633/matplotlib-plot-pulse-propagation-in-3d. Zaraz siądę i spróbuję zaimplementować.
UPDATE
Gotowa i śmigająca funkcja:
import numpy as np
import matplotlib.pyplot as plt
def draw3DPlot(xScale, yScale, data):
sx = xScale.size
sy = yScale.size
xScale = np.tile(xScale, (sy, 1))
yScale = np.tile(yScale, (sx, 1)).T
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d')
surf = ax.plot_wireframe(xScale, yScale, data, cstride=1000)
draw3DPlot(np.arange(10),
np.linspace(1, 3, 3),
np.array([
[1, 2, 3, 4, 5, 6, 1, 2, 3, 2],
[1, 2, 3, 4, 5, 6, 1, 2, 3, 2],
[1, 2, 3, 4, 5, 6, 1, 2, 3, 2],
]))
plt.show()