code: def plot_PCoA(cat_data, otu_name, unifrac, names, colors, xr, yr, outDir,
                save_as, plot_style):
      
      fig = plt.figure(figsize=(14, 8))
      ax = fig.add_subplot(111)
  
      for i, cat in enumerate(cat_data):
          plt.scatter(cat_data[cat]["pc1"], cat_data[cat]["pc2"], cat_data[cat]["size"],
                      color=colors[cat], alpha=0.85, marker="o", edgecolor="black",
                      label=cat)
      lgnd = plt.legend(loc="best", scatterpoints=3, fontsize=13)
      for i in range(len(colors.keys())):
          lgnd.legendHandles[i]._sizes = [80]  # Change the legend marker size manually
      plt.title(" ".join(otu_name.split("_")), style="italic")
      plt.ylabel("PC2 (Percent Explained Variance {:.3f}%)".format(float(unifrac["varexp"][1])))
      plt.xlabel("PC1 (Percent Explained Variance {:.3f}%)".format(float(unifrac["varexp"][0])))
      plt.xlim(round(xr[0]*1.5, 1), round(xr[1]*1.5, 1))
      plt.ylim(round(yr[0]*1.5, 1), round(yr[1]*1.5, 1))
      if plot_style:
          gu.ggplot2_style(ax)
          fc = "0.8"
      else:
          fc = "none"
      fig.savefig(os.path.join(outDir, "_".join(otu_name.split())) + "." + save_as,
                  facecolor=fc, edgecolor="none", format=save_as,
                  bbox_inches="tight", pad_inches=0.2)
      plt.close(fig)
docs: Plot PCoA principal coordinates scaled by the relative abundances of
      otu_name.