title: Rotating axis text for each subplot
body: <p>Im trying to plot a scatter matrix. I'm building on the example given in this thread <a href="https://stackoverflow.com/questions/7941207/is-there-a-function-to-make-scatterplot-matrices-in-matplotlib">Is there a function to make scatterplot matrices in matplotlib?</a>. Here I have just modified the code slightly to make the axis visible for all the subplots. The modified code is given below</p>
  
  <pre><code>import itertools
  import numpy as np
  import matplotlib.pyplot as plt
  
  def main():
      np.random.seed(1977)
      numvars, numdata = 4, 10
      data = 10 * np.random.random((numvars, numdata))
      fig = scatterplot_matrix(data, ['mpg', 'disp', 'drat', 'wt'],
              linestyle='none', marker='o', color='black', mfc='none')
      fig.suptitle('Simple Scatterplot Matrix')
      plt.show()
  
  def scatterplot_matrix(data, names, **kwargs):
      """Plots a scatterplot matrix of subplots.  Each row of "data" is plotted
      against other rows, resulting in a nrows by nrows grid of subplots with the
      diagonal subplots labeled with "names".  Additional keyword arguments are
      passed on to matplotlib's "plot" command. Returns the matplotlib figure
      object containg the subplot grid."""
      numvars, numdata = data.shape
      fig, axes = plt.subplots(nrows=numvars, ncols=numvars, figsize=(8,8))
      fig.subplots_adjust(hspace=0.05, wspace=0.05)
  
      for ax in axes.flat:
          # Hide all ticks and labels
          ax.xaxis.set_visible(True)
          ax.yaxis.set_visible(True)
  
  #        # Set up ticks only on one side for the "edge" subplots...
  #        if ax.is_first_col():
  #            ax.yaxis.set_ticks_position('left')
  #        if ax.is_last_col():
  #            ax.yaxis.set_ticks_position('right')
  #        if ax.is_first_row():
  #            ax.xaxis.set_ticks_position('top')
  #        if ax.is_last_row():
  #            ax.xaxis.set_ticks_position('bottom')
  
      # Plot the data.
      for i, j in zip(*np.triu_indices_from(axes, k=1)):
          for x, y in [(i,j), (j,i)]:
              axes[x,y].plot(data[x], data[y], **kwargs)
  
      # Label the diagonal subplots...
      for i, label in enumerate(names):
          axes[i,i].annotate(label, (0.5, 0.5), xycoords='axes fraction',
                  ha='center', va='center')
  
      # Turn on the proper x or y axes ticks.
      for i, j in zip(range(numvars), itertools.cycle((-1, 0))):
          axes[j,i].xaxis.set_visible(True)
          axes[i,j].yaxis.set_visible(True)
      fig.tight_layout()
      plt.xticks(rotation=45)
      fig.show()
      return fig
  
  main()
  </code></pre>
  
  <p>I cant seem to be able to rotate the x-axis text of all the subplots. As it can be seen, i have tried the plt.xticks(rotation=45) trick. But this seems to perform the rotation for the last subplot alone.</p>