code: def _draw_trees(trees, nrow=1, ncol=1, rmargin=.3, iopts=None, outdir=".",
      shfile=None, **kwargs):
      
      from jcvi.graphics.tree import draw_tree
  
      if shfile:
          SHs = DictFile(shfile, delimiter="\t")
  
      ntrees = len(trees)
      n = nrow * ncol
      for x in xrange(int(ceil(float(ntrees)/n))):
          fig = plt.figure(1, (iopts.w, iopts.h)) if iopts \
                else plt.figure(1, (5, 5))
          root = fig.add_axes([0, 0, 1, 1])
  
          xiv = 1. / ncol
          yiv = 1. / nrow
          xstart = list(np.arange(0, 1, xiv)) * nrow
          ystart = list(chain(*zip(*[list(np.arange(0, 1, yiv))[::-1]] * ncol)))
          for i in xrange(n*x, n*(x+1)):
              if i == ntrees:
                  break
              ax = fig.add_axes([xstart[i%n], ystart[i%n], xiv, yiv])
              f = trees.keys()[i]
              tree = trees[f]
              try:
                  SH = SHs[f]
              except:
                  SH = None
              draw_tree(ax, tree, rmargin=rmargin, reroot=False, \
                  supportcolor="r", SH=SH, **kwargs)
  
          root.set_xlim(0, 1)
          root.set_ylim(0, 1)
          root.set_axis_off()
  
          format = iopts.format if iopts else "pdf"
          dpi = iopts.dpi if iopts else 300
          if n == 1:
              image_name = f.rsplit(".", 1)[0] + "." + format
          else:
              image_name = "trees{0}.{1}".format(x, format)
          image_name = op.join(outdir, image_name)
          savefig(image_name, dpi=dpi, iopts=iopts)
          plt.clf()
docs: Draw one or multiple trees on one plot.