title: how to plot a line over a 3d surface in matplotlib
body: <p>I have a 3d plot and would like to draw several lines over the surface of the plot. It is not clear to me how I should organize the data of the lines so that it fall on the surface.</p>
  
  <p>Some explanation for the code below: I made a sensitivity analysis on the temperature sensitivity parameters describing the activity of the Rubisco enzym (crucial in photosynthesis). The activation energy, <code>Ha</code>, is the only parameter in this equation. </p>
  
  <p>The function <code>plot_TemperatureEffectOnRuBisCOKinetics</code> draws the 3D plot. Now I would like to see the lines for each of the 4 parameters described in the function <code>TemperatureEffectOnRuBisCOKinetics</code> on the surface, with each line nicely labelled.</p>
  
  <p>Some tips on how to structure the data for these lines would be very much appreciated!</p>
  
  <pre><code>import matplotlib.pyplot as plt
  from mpl_toolkits.mplot3d import Axes3D
  import numpy as np
  
  cRefTmp_C           = 25.                # [C]
  cRefTmp_K           = cRefTmp_C + 273.15 # [K]
  MolarGasConstant    = 8.314472           # [J mol-1 K-1]
  
  def TemperatureEffectOnRuBisCOKinetics(Ha, LeafTemperature_C):
      """
          multiplier for temperature effects on Kc, K0, Ri and GammaStar [ - ]
          formula thesis Manfred Forstreuter p 66 (eq 2.41) 
  
          Parameter            ParameterValue
          cHaOfGammaStar   29000  
          cHaOfK0      35900
          cHaOfKc      59500
          cHaOfRi      46390   
  
          refs for equation:
          Harley P.C., Thomas R.B., Reynolds J.F., Strain B.R., 1992. 
              Modelling photosynthesis of cotton grown in elevated CO2. Plant, Cell Environ. 15: 271-282.
          Farquhar G.D., von Caemmerer S. &amp; Berry J.A., 1980. 
              A biochemical model of photosynthetic CO2 assimilation in leaves of C3 species. Planta 149: 78-90.
  
      """
      LeafTemperature_K = LeafTemperature_C + 273.15               # from Celsius to Kelvin
      return exp(Ha * (LeafTemperature_K - cRefTmp_K) / (MolarGasConstant * LeafTemperature_K * cRefTmp_K))
  
  
  def plot_TemperatureEffectOnRuBisCOKinetics():
      Ha     = np.arange(25000., 60000., 1000.)
      T      = np.arange(0., 30., 1)
      Ha,T   = np.meshgrid(Ha,T)
      TEff   = TemperatureEffectOnRuBisCOKinetics(Ha, T)
  
      fig = plt.figure()
      fig = plt.figure(facecolor='White')
      ax = fig.gca(projection='3d')
  
      surf = ax.plot_surface(Ha,T,TEff, rstride=1, cstride=1, cmap=cm.coolwarm,
             linewidth=0, antialiased=False)
  
      ax.set_zlim(TEff.min() ,TEff.max())
      ax.zaxis.set_major_locator(LinearLocator(10))
      ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))
      fig.colorbar(surf, shrink=0.5, aspect=5)
  
      ax.set_title('Effect of temperature on Michaelis Menten-parameters \n at different Ha values')
      ax.set_xlabel('Activation energy, Ha (J mol-1)')
      ax.set_ylabel('Leaf surface temperature (C)')
      ax.set_zlabel('T-multiplier to reference value')
  
  
      plt.show()
  
  plot_TemperatureEffectOnRuBisCOKinetics()
  </code></pre>