title: Plot surfaces on a cube
body: <p>I would like to plot surfaces to a cube with <code>matplotlib</code>. I am trying to use <code>ax.plot_surface(X, Y, Z)</code>, however I am a bit confused. What should the <code>X</code>, <code>Y</code> and <code>Z</code> represent as 2D arrays?</p>
  
  <pre><code>import numpy as np
  from mpl_toolkits.mplot3d import Axes3D
  import matplotlib.pyplot as plt
  
  points = np.array([[-1, -1, -1],
                        [1, -1, -1 ],
                        [1, 1, -1],
                        [-1, 1, -1],
                        [-1, -1, 1],
                        [1, -1, 1 ],
                        [1, 1, 1],
                        [-1, 1, 1]])
  
  fig = plt.figure()
  ax = fig.add_subplot(111, projection='3d')
  # ax.plot_surface(X, Y, Z)  # how?
  ax.scatter3D(points[:, 0], points[:, 1], points[:, 2])
  ax.set_xlabel('X')
  ax.set_ylabel('Y')
  ax.set_zlabel('Z')
  plt.show()
  </code></pre>