<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def plot_PCoA(cat_data, otu_name, unifrac, names, colors, xr, yr, outDir, save_as, plot_style):
 """ Plot PCoA principal coordinates scaled by the relative abundances of otu_name. """

    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)