Source code for mice.plot_mice

try:
    import matplotlib.pyplot as plt
except ModuleNotFoundError:
    raise Exception("'matplotlib' is not installed. Install matplotlib to use "
                    "plot_mice")
import matplotlib
from shutil import which as find_executable




[docs] def plot_mice(data, ax, x, y, style='loglog', markers=True, legend=True, color='C0'): """ Plot MICE logs on the given Matplotlib axes. Parameters ---------- data : pandas.DataFrame DataFrame containing optimization log data, including event markers. ax : matplotlib.axes.Axes Axes object where the data will be plotted. x : str Column name used for the x-axis. y : str Column name used for the y-axis. style : {'loglog', 'semilogy', 'semilogx', 'plot'} Plot style controlling linear/log scaling of axes. markers : bool If True, adds event markers (start, add, dropped, restart, end). legend : bool If True, adds a legend. color : str Line color passed to Matplotlib. Returns ------- matplotlib.axes.Axes The updated axes. """ start = data[data['event'] == 'start'] adds = data[data['event'] == 'add'] dropped = data[data['event'] == 'dropped'] restarts = data[data['event'] == 'restart'] end = data[data['event'] == 'end'] drop = dropped.size > 0 plot_style = { 'loglog': ax.loglog, 'semilogy': ax.semilogy, 'semilogx': ax.semilogx, 'plot': ax.plot } plot_func = plot_style[style] plots = [] plots += [plot_func(data[x], data[y], color=color)] if markers: plots += [plot_func(start[x], start[y], 'bs', ms=5, label='Start')] if drop: plots += [plot_func(dropped[x], dropped[y], 'kx', ms=3, label='Dropped')] plots += [plot_func(adds[x], adds[y], 'co', ms=3, label='Add')] plots += [plot_func(restarts[x], restarts[y], 'rs', ms=5, label='Restart')] plots += [plot_func(end[x], end[y], 's', color='purple', ms=5, label='End')] if legend and markers: # ax.legend(plots[1:]) ax.legend() return ax
def _plot_config(): if find_executable('latex'): matplotlib.rcParams['text.usetex'] = True matplotlib.rcParams['text.latex.preamble'] = [ r'\usepackage{amsfonts}' r'\usepackage{amsthm}' r'\usepackage{amsmath}' r'\usepackage{amssymb}'][0] matplotlib.rcParams['font.family'] = 'serif' matplotlib.rcParams['font.serif'] = 'Computer Modern' matplotlib.rcParams['xtick.labelsize'] = 12 matplotlib.rcParams['ytick.labelsize'] = 12 matplotlib.rcParams.update({'font.size': 12}) matplotlib.rcParams['axes.linewidth'] = 1 matplotlib.rcParams['axes.facecolor'] = 'white' matplotlib.rcParams['axes.grid'] = True matplotlib.rcParams['grid.linestyle'] = '--' matplotlib.rcParams['grid.color'] = 'grey' matplotlib.rcParams['grid.linewidth'] = 0.5 matplotlib.rc('axes', edgecolor='black') # plt.rc('font', family='sans-serif') _plot_config()