Source code for plotting
import matplotlib.pyplot as plt
import numpy as np
SMALL_SIZE = 12
MEDIUM_SIZE = 14
BIGGER_SIZE = 16
plt.rc('font', size=SMALL_SIZE)  # controls default text sizes
plt.rc('axes', titlesize=SMALL_SIZE)  # fontsize of the axes title
plt.rc('axes', labelsize=MEDIUM_SIZE)  # fontsize of the x and y labels
plt.rc('xtick', labelsize=SMALL_SIZE)  # fontsize of the tick labels
plt.rc('ytick', labelsize=SMALL_SIZE)  # fontsize of the tick labels
plt.rc('legend', fontsize=SMALL_SIZE)  # legend fontsize
plt.rc('figure', titlesize=BIGGER_SIZE)  # fontsize of the figure title
[docs]def plot_potency(df, truncate_actions=False):
    """
    Plot depicting cumulative potency of a rotation over time.
    
    :param df: A Pandas DataFrame, output from Samurai.parse_rotation()
    :param truncate_actions: If True, x-axis labeled as time instead of actions
    """
    fig, ax = plt.subplots(figsize=(12, 4))
    xlocs = np.arange(len(df))
    bar_width = 0.2
    ax.bar(xlocs, df['Total Potency'], bar_width, label='rotation')
    
    if not truncate_actions:
        ax.set_xticks(xlocs)
        plt.xticks(rotation=70)
        ax.set_xticklabels(df['Weaponskill']+'\n'+
                           [',\n'.join(abilities) if len(abilities) > 0 else '' for abilities in df['Abilities']])
        ax.set_xlabel('Actions')
    else:
        ax.set_xlabel('Time')
    
    ax.set_ylabel('Cumulative Potency')
    ax.yaxis.grid(True)
    ax.legend(loc='best')
    fig.tight_layout(pad=2) 
[docs]def compare_potencies(dfs, labels):
    """
    Compares the potencies of two rotations over time.
    :param dfs: A list of DataFrames, output from Samurai.parse_rotation()
    :param labels: A list of labels corresponding to each DataFrame
    """
    fig, ax = plt.subplots(figsize=(12, 4))
    xlocs = dfs[0]['Time']
    ax.plot(xlocs, dfs[0]['Total Potency'], '-s', label=labels[0])
    xlocs = dfs[-1]['Time']
    ax.plot(xlocs, dfs[-1]['Total Potency'], ':o', label=labels[-1])
    plt.xticks(rotation=70)
    ax.set_xticks(xlocs)
    ax.set_xlabel('Time')
    ax.set_ylabel('Cumulative Potency')
    ax.yaxis.grid(True)
    ax.legend(loc='best')
    fig.tight_layout(pad=2) 
[docs]def compare_n_potencies(dfs, labels):
    """
    Compares the potencies of n rotations over time.
    :param dfs: A list of DataFrames, , output from Samurai.parse_rotation()
    :param labels: A list of labels corresponding to each DataFrame
    """
    fig, ax = plt.subplots(figsize=(12, 4))
    for k, df in enumerate(dfs):
        xlocs = dfs[k]['Time']
        ax.plot(xlocs, dfs[k]['Total Potency'], '-o', label=labels[k])
    plt.xticks(rotation=70)
    ax.set_xticks(xlocs)
    ax.set_xlabel('Time')
    ax.set_ylabel('Cumulative Potency')
    ax.yaxis.grid(True)
    ax.legend(loc='best')
    fig.tight_layout(pad=2)