def visual_summary()

in pageload-summary/summarize.py [0:0]


def visual_summary(summary, save=False, directory=None):

    for platform, apps in sorted(summary.items()):

        for app, variants in sorted(apps.items(), reverse=1):

            plt.figure(figsize=(10, 10))
            plt.suptitle(platform + f" {app}")
            for variant, pl_types in sorted(variants.items(), reverse=1):

                """
                This is a simple visualization to show the metric. It
                can be modified to anything.
                """

                figc = 1
                for pl_type, data in pl_types.items():
                    plt.subplot(1, 2, figc)
                    figc += 1

                    variant = variant if variant != "None" else "e10s"
                    plt.title(f"{pl_type}")

                    times = [
                        datetime.datetime.strptime(x, "%Y-%m-%d %H:%M")
                        for x, y in data["values"]
                    ]
                    vals = [y for x, y in data["values"]]

                    ma_times = [
                        datetime.datetime.strptime(x, "%Y-%m-%d %H:%M")
                        for x, y in data["moving_average"]
                    ]
                    ma_vals = [y for x, y in data["moving_average"]]

                    md_times = md.date2num(times)
                    md_ma_times = md.date2num(ma_times)

                    ax = plt.gca()
                    xfmt = md.DateFormatter("%Y-%m-%d %H:%M:%S")
                    ax.xaxis.set_major_formatter(xfmt)
                    plt.xticks(rotation=25)

                    plt.plot(md_times, vals, label=variant)
                    plt.plot(md_ma_times, ma_vals, label=variant + " (avg)")
                    plt.legend()

            if save:
                if directory != None:
                    if directory[-1] != "/":
                        directory += "/"
                    dest = directory + platform + ".png"
                else:
                    dest = platform + ".png"
                plt.savefig(dest)
                plt.close()
            else:
                plt.show()