title: Center-align tick labels of matplotlib heatmap
body: <p>I have plotted a heat map with imshow, but I can't get the x tick labels to be center aligned even though I made <code>ha='center'</code>.</p>
  
  <p>Here is my code:</p>
  
  <pre><code>font= mpl.rcParams['font.size']=8.0
  lineWidth= mpl.rcParams['lines.linewidth']= 1.0
  absolute_max=abs(max_num)
  absolute_min=abs(min_num)
  cb_boundary=max(absolute_max,absolute_min)
  tree=Phylo.read("reorder.nwk","newick")
  a=1.0
  
  cdict = {'red':  ((0.0, 0.0, 0.0),
                 (0.25,0.0, 0.0),
                 (0.5, 0.8, 1.0),
                 (0.75,1.0, 1.0),
                 (1.0, 0.4, 1.0)),
  
       'green': ((0.0, 0.0, 0.0),
                 (0.25,0.0, 0.0),
                 (0.5, 0.9, 0.9),
                 (0.75,0.0, 0.0),
                 (1.0, 0.0, 0.0)),
  
       'blue':  ((0.0, 0.0, 0.4),
                 (0.25,1.0, 1.0),
                 (0.5, 1.0, 0.8),
                 (0.75,0.0, 0.0),
                 (1.0, 0.0, 0.0))
      }
  
  plt.register_cmap(name='BlueRed', data=cdict)
  norm = mpl.colors.Normalize(vmin=-3.0, vmax=3.0)
  cmap = plt.get_cmap('BlueRed')
  masked_array = np.ma.masked_where(full_len==np.NaN,full_len)
  cmap.set_bad('green',1.0)
  fig= plt.figure(figsize=(19,10))
  rect_phyl = [-0.7, 0.3, 0.2, 0.6]
  rect_ht = [-0.5,0.3 , 0.3, 0.6]
  phyl_ax = plt.axes(rect_phyl,frameon=True)
  ht_ax = plt.axes(rect_ht)    
  ##fig.suptitle(file_handle.replace('_del.csv',''),fontsize=22)
  phyl_ax.add_patch(Rectangle((8.1,17.6),6.5,16.9,edgecolor="brown", fill=False))
  phyl_ax.add_patch(Rectangle((8.1,10.4),6.5,7.0,edgecolor="magenta", fill=False))
  phyl_ax.add_patch(Rectangle((8.1,7.6),6.5,2.6,edgecolor="black", fill=False))
  phyl_ax.add_patch(Rectangle((8.1,0.3),6.5,6.9,edgecolor="turquoise", fill=False))    
  fig.subplots_adjust(hspace=0,wspace=0)
  Phylo.draw(tree, axes=phyl_ax, do_show=False,show_confidence=False)    
  
  ht_ax.set_xlim(0,34)
  ht_ax.set_ylim(0,34)
  phyl_ax.set_xlim(0,15)
  
  divider = make_axes_locatable(ht_ax)
  cbax = divider.append_axes("right", size="5%", pad=0.10)
  phyl_ax.set(xlabel='',ylabel='') 
  plt.setp(phyl_ax.get_xticklabels(),visible=False)
  plt.setp(phyl_ax.get_yticklabels(),visible=False)
  plt.setp(ht_ax.get_xticklabels(),visible=True)
  plt.setp(ht_ax.get_yticklabels(),visible=False)
  plt.setp(phyl_ax.get_xticklines(),visible=False)
  plt.setp(phyl_ax.get_yticklines(),visible=False)
  plt.setp(ht_ax.get_xticklines(),visible=False)
  plt.setp(ht_ax.get_yticklines(),visible=False)
  img = ht_ax.imshow(masked_array, cmap=cmap, interpolation='none',aspect='auto',vmin=-cb_boundary,vmax=cb_boundary,extent=[34,0,34,0],origin='lower')
  xticks=range(34)
  ht_ax.xaxis.set_ticks(xticks)
  ht_ax.yaxis.set_ticks(xticks)
  ht_ax.grid(True, which='both')
  ha = ['right', 'center', 'left']
  ht_ax.set_xticklabels(txtnames,rotation=45,fontsize=8,ha=ha[1],minor=False)
  
  plt.colorbar(img, cax=cbax)
  heatmap_file=fig.savefig('/home/Desktop/heatmap/'+file_handle.replace('.csv','')+'.pdf',bbox_inches='tight',dpi=150)
  </code></pre>
  
  <p>Can someone help me find the error?            </p>