title: matplotlib 3d projection, tick labels exceed margins
body: <p>I have generated the plot below for a friend. How can I expand the plot, so the tick labels are not cut off? And how do I left align the y-axis tick labels and align them tightly to the axis?</p>
  
  <p><a href="https://i.stack.imgur.com/p7LEe.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/p7LEe.jpg" alt="enter image description here"></a></p>
  
  <p>Here is the input file una.txt:</p>
  
  <pre><code>#Average (pg/mL)        No Il-2 TGFbeta1        IL-2 TGFbeta1   IL-2 TGFbeta1 50 ngmL TNF-alpha IL-2 TGFbeta1 500 ngmL TNF-alpha        IL-2 TGFbeta1 10 ngmL IL-1beta  IL-2 TGFbeta1 100 ngmL IL-1beta 50 ngmL TNF-alpha 10 ngmL IL-1beta      500 ngmL TNF-alpha 100 ngmL IL-1beta
  IL-9    29.53333333     13568.975       12761.7675      9446.42 9973.11 9844.95 8227.38 8955.19
  IL-10   13.415  18.04833333     30.22875        32.815  26.43875        31.945  32.73125        36.87625
  IFN-gamma       3380.6225       11405.42        11129.15        11359.28667     11263.78667     11557.82        9413.87 11814.92
  IL-17   1.705   6.2025  7.11625 5.485   5.98625 6.79125 7.57625 9.73
  TNF-alpha       1780.542857     2082.36 6405.03875      5134.015        2209.301667     1938.536667     5335.241429     9923.431429
  IL-1beta        21.144  21.096  48.33333333     46.775  2182.01 20023.676       2614.72 19148.32
  IL-2    42.56166667     10263.83667     11560.08667     11963.778       14336.2925      13951.88        13017.13        14915.488
  IL-6    100.2433333     196.9666667     233.1133333     210.3383333     542.265 594.2375        730.1183333     560.94
  IL-21   8.513333333     112.3333333     104.9228571     90.0375 105.6975        142.205 105.61625       138.9716667
  IL-22   99.07   86.05   75.57666667     70.53333333     86.45666667     119.2125        93.78666667     95.6075
  IL-23   27.72   81.395  72.89   65.305  70.19666667     61.99   95.62   90.1575
  IL-4    104.86625       112.05625       119.52875       102.7775        120.60875       115.775 113.12375       112.36375
  IL-5    703.17  444.29625       546.255 442.9175        538.66875       569.0585714     532.565 538.6
  IL-12p70        6.263333333     6.77    7.4325  9.64    11.695  12.27666667     12.21   12.23857143
  IL-18   221.6375        268.73  247.2725        255.8125        232.2266667     270.1475        262.3966667     269.495
  IL-13   3365.457143     5300.827143     5108.098333     3604.03 5037.185714     3931.995        6778.05 5125.295
  IL-27   49.78470588     70.2025 30.695  34.016  70.115  52.73166667     87.27   33.16
  GM-CSF  8542.278333     11626.19667     9663.6175       18898.80143     11864.3125      12143.33857     28017.90857     36413.00833
  </code></pre>
  
  <p>Here is my code:</p>
  
  <pre><code>from mpl_toolkits.mplot3d import Axes3D
  import matplotlib.pyplot as plt
  import numpy as np
  
  colors = [
      '#e41a1c', '#377eb8', '#4daf4a', '#984ea3',
      '#ff7f00', '#ffff33', '#a65628', '#f781bf',
      ]
  
  a = np.genfromtxt('una.txt', delimiter='\t', usecols=(1, 2, 3, 4, 5, 6, 7, 8))
  
  fig = plt.figure(tight_layout=True)
  ax = fig.add_subplot(111, projection='3d')
  
  xticklabels = np.genfromtxt('una.txt', delimiter='\t', usecols=(0), dtype=None)
  
  with open('una.txt') as f:
      yticklabels = [s.replace('alpha', r'$\alpha$').replace('gamma', r'$\gamma$').replace('beta', r'$\beta$') for s in f.readline().rstrip().split('\t')[1:]]
  
  ax.set_xticks(np.arange(0, len(xticklabels), 1))
  ax.set_xticklabels(
      [label.decode("utf-8").replace('alpha', r'$\alpha$').replace('gamma', r'$\gamma$').replace('beta', r'$\beta$') for label in xticklabels],
      rotation='vertical', fontsize=6)
  ax.set_yticks(np.arange(0, len(yticklabels), 1))
  ax.set_yticklabels(yticklabels, fontsize=6, ha='left')
  ax.tick_params(axis='z', labelsize=6)
  
  for c, z in zip(colors, np.arange(0, 7, 1)):
      xs = np.arange(a.shape[0])
      ys = a[:,z]
  
      ax.bar(xs, ys, zs=z, zdir='y', color=[c] * len(xs), alpha=0.8) # yerr=[]
  
  ax.set_zlabel('Average (pg/mL)')
  
  plt.tight_layout()
  
  #plt.show()
  plt.savefig('una.png', bbox_inches='tight', dpi=600)
  plt.close()
  </code></pre>