title: matplotlib plot_surface colormap does not scale with the z-axis
body: <p>I try to make simple 3D plot with plot_surface of matplotlib, below is the minimum example:</p>
  <pre><code>import numpy as np
  import matplotlib.pyplot as plt
  from matplotlib import cm
  x_test = np.arange(0.001, 0.01, 0.0005)
  y_test = np.arange(0.1, 100, 0.05)
  
  fig = plt.figure()
  ax = fig.add_subplot(111, projection='3d')
  
  Xtest, Ytest = np.meshgrid(x_test, y_test)
  
  Ztest = Xtest**-1 + Ytest
  
  surf = ax.plot_surface(Xtest, Ytest, Ztest,
                         cmap=cm.plasma, alpha=1,
                         antialiased=False)
  
  fig.colorbar(surf, shrink=0.5, aspect=5)
  ax.set_ylabel(r'$ Y $', fontsize=16)
  ax.set_xlabel(r'$ X $', fontsize=16)
  ax.set_zlabel(r'$ Z $', fontsize=16)
  
  </code></pre>
  <p>The result gives strange colormap, that does not represent the magnitude of the z scale, as you can see from here <a href="https://i.stack.imgur.com/kjxl6.png" rel="nofollow noreferrer">3D plot result</a>.
  I mean if you take a straight line of constant Z, you don't see the same color.
  I've tried to change the <code>ccount</code> and <code>rcount</code> inside <code>plot_surface</code> function or changing the interval of the Xtest or Ytest data, nothing helps.
  I've tried some suggestion from <a href="https://stackoverflow.com/questions/46260682/how-to-set-the-scale-of-z-axis-equal-to-x-and-y-axises-in-python-plot-surface">here</a> and <a href="https://stackoverflow.com/questions/46260682/how-to-set-the-scale-of-z-axis-equal-to-x-and-y-axises-in-python-plot-surface">here</a>. But it seems not related.</p>
  <p>Could you help me how to solve this? It seems a simple problem, but I couldn't solve it.
  Thanks!</p>
  <p><strong>Edit</strong></p>
  <p>I add example but using the original equation that I don't write it here (it's complicated), please take a look: <a href="https://i.stack.imgur.com/7iVB0.png" rel="nofollow noreferrer">Comparison</a>.
  While the left figure was done in Matlab (by my advisor),
  the right figure by using matplotlib.
  You can see clearly the plot on the left really make sense,
  the brightest color always on the maximum z-axis. Unfortunately, i don't know matlab. I hope i can do it by using python,
  Hopefully this edit makes it more clear of the problem.</p>
  <p><strong>Edit 2</strong>
  I'm sure this is not the best solution. That's why I put it here, not as an answer. As suggested by @swatchai to use the <code>contour3D</code>.
  Since surface is set of lines, I can generate the correct result by plotting a lot of contour lines, by using:</p>
  <pre><code>surf = ax.contour3D(Xtest, Ytest, Ztest, 500, cmap=cm.plasma,
                   alpha=0.5, antialiased=False)
  </code></pre>
  <p>The colormap is correct as you can see from here<a href="https://i.stack.imgur.com/x3Nt3.png" rel="nofollow noreferrer">alternative1</a>
  But the plot is very heavy. When you zoom-in, it doesn't look good, unless you increase again the number of the contour.
  Any suggestion are welcome :).</p>