title: Difference between ax.set_xlabel() and ax.xaxis.set_label() in MatplotLib 3.0.1
body: <p>(This may be a naive question. Pardon me if so.)</p>
  
  <p>I am using Python 3.7.1 and MatplotLib 3.0.1.</p>
  
  <p>In below simple code, I used different ways to assign labels to axes. They <em>seem</em> to be equivalent from an OO perspective. But only the <code>x axis</code> label shows. Why?</p>
  
  <pre><code>import matplotlib.pyplot as plt
  import numpy as np
  from mpl_toolkits.mplot3d import Axes3D
  
  fig = plt.figure()
  ax = fig.add_subplot(111, projection='3d')
  
  x = np.linspace(-2,2,60)
  y = np.linspace(-2,2,60)
  
  xx, yy = np.meshgrid(x,y)
  
  z = xx**2 + yy**3
  
  surf = ax.plot_surface(xx, yy, z, cmap="viridis")
  
  ax.set_xlabel('x axis')      # &lt;====== This works
  ax.yaxis.set_label('y axis') # &lt;====== This doesn't work
  ax.zaxis.set_label('z axis') # &lt;====== This doesn't work
  </code></pre>
  
  <p>In below image, you can see only the label <code>x axis</code> is shown.</p>
  
  <p><a href="https://i.stack.imgur.com/U2zjQ.png" rel="noreferrer"><img src="https://i.stack.imgur.com/U2zjQ.png" alt="enter image description here"></a></p>
  
  <h2>ADD 1</h2>
  
  <p>According to <a href="https://matplotlib.org/api/_as_gen/matplotlib.axis.XAxis.set_label.html" rel="noreferrer">here</a>, it seems the <code>matplotlib.axis.XAxis.set_label()</code> approach should work. </p>
  
  <p>In my case, the <code>ax.xaxis</code> is of type <code>mpl_toolkits.mplot3d.axis3d.XAxis</code>. It's a little different type. But I think it <em>should</em> work as well.</p>