title: Show axis at center, but keep labels on the left
body: <p>I am attempting to plot a distribution which is centred around zero, and as such I want to show the y-axis spine at 0, but I want to keep the tick labels themselves to the left of the graph (i.e. outside the plot area). I thought this might be achievable through <code>tick_params</code>, but the <code>labelleft</code> option seems to keep the labels in the centre. A short example is as follows:</p>
  
  <pre><code>import matplotlib.pyplot as plt
  import numpy as np
  
  np.random.seed(1)
  
  vals = np.random.normal(loc=0, scale=10, size=300)
  bins = range(int(min(vals)), int(max(vals))+1)
  
  fig, ax = plt.subplots(figsize=(15,5))
  ax.hist(vals, bins=bins)
  
  ax.spines['left'].set_position('zero')
  ax.spines['right'].set_visible(False)
  ax.spines['top'].set_visible(False)
  
  ax.grid(axis='y', which='major', alpha=0.5)
  
  plt.show()
  </code></pre>
  
  <p>This gives you:</p>
  
  <p><a href="https://i.stack.imgur.com/QcqMa.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/QcqMa.png" alt="Histogram centred at zero"></a></p>
  
  <p>I would like the labels to be at the left end of the gridlines, rather than the centre of the plot.</p>