title: Plotting Poly3DCollection using add_collection3d
body: <p>I have tree arrays of the same size representing the spherical coordinates of points in space. I want to plot them transformed in cartesian coordinates. I am trying to produce a surface and I need to use the <code>add_collection3d</code> method instead of the <code>plot_surface</code> because of the dimensions of my arrays. The original arrays have different lengths in spherical coordinates and the transformation into cartesian is not linear.</p>
  <p>A simplified example follows:</p>
  <pre><code>import numpy as np
  import matplotlib.pyplot as plt
  from matplotlib.colors import LightSource
  from mpl_toolkits.mplot3d.art3d import Poly3DCollection
  from mpl_toolkits.mplot3d import Axes3D
  
  
  phi_rad = np.linspace(0,360, 10)/180.0*np.pi
  theta_rad = np.linspace(0,360, 10)/180.0*np.pi # cos(theta)
  counts_str = np.linspace(0, 100, 10) # counts
  
  # convertion to cartesian coordinates 1D arrays
  x = counts_str * np.sin(theta_rad) * np.cos(phi_rad)
  y = counts_str * np.sin(theta_rad) * np.sin(phi_rad)
  z_str = counts_str * np.cos(theta_rad)
  
  verts = [list(zip(x, y, z_str))]
  
  fig = plt.figure()
  ax = Axes3D(fig)
  
  ax.add_collection3d(Poly3DCollection(verts, cmap=&quot;hot&quot;, alpha=0.9))
  ls = LightSource(azdeg=225.0, altdeg=45.0)
  
  ax.set_xlim3d(x.min(), x.max())
  ax.set_ylim3d(y.min(), y.max())
  ax.set_zlim3d(z_str.min(), z_str.max())
  
  plt.show()
  </code></pre>
  <p>I would like to apply a <code>cmap</code> and a <code>LightSource</code> (don't affect the plot), as well as an <code>antialiased</code> because in my real data z is an array with 20000 elements.</p>
  <p>Looking forward to hearing from your collective intelligence!</p>