code: def dendrogram(df, method='average',
                 filter=None, n=0, p=0, sort=None,
                 orientation=None, figsize=None,
                 fontsize=16, inline=False
                 ):
      if not figsize:
          if len(df.columns) <= 50 or orientation == 'top' or orientation == 'bottom':
              figsize = (25, 10)
          else:
              figsize = (25, (25 + len(df.columns) - 50)*0.5)
      plt.figure(figsize=figsize)
      gs = gridspec.GridSpec(1, 1)
      ax0 = plt.subplot(gs[0])
      df = nullity_filter(df, filter=filter, n=n, p=p)
      df = nullity_sort(df, sort=sort)
      x = np.transpose(df.isnull().astype(int).values)
      z = hierarchy.linkage(x, method)
      if not orientation:
          if len(df.columns) > 50:
              orientation = 'left'
          else:
              orientation = 'bottom'
      hierarchy.dendrogram(z,
                           orientation=orientation,
                           labels=df.columns.tolist(),
                           distance_sort='descending',
                           link_color_func=lambda c: 'black',
                           leaf_font_size=fontsize,
                           ax=ax0
                          )
      ax0.set_aspect('auto')
      ax0.grid(b=False)
      if orientation == 'bottom':
          ax0.xaxis.tick_top()
      ax0.xaxis.set_ticks_position('none')
      ax0.yaxis.set_ticks_position('none')
      ax0.spines['top'].set_visible(False)
      ax0.spines['right'].set_visible(False)
      ax0.spines['bottom'].set_visible(False)
      ax0.spines['left'].set_visible(False)
      ax0.patch.set_visible(False)
      if orientation == 'bottom':
          ax0.set_xticklabels(ax0.xaxis.get_majorticklabels(), rotation=45, ha='left')
      elif orientation == 'top':
          ax0.set_xticklabels(ax0.xaxis.get_majorticklabels(), rotation=45, ha='right')
      if orientation == 'bottom' or orientation == 'top':
          ax0.tick_params(axis='y', labelsize=int(fontsize / 16 * 20))
      else:
          ax0.tick_params(axis='x', labelsize=int(fontsize / 16 * 20))
      if inline:
          plt.show()
      else:
          return ax0