Source code for spikecurate.plotting
"""Plotting helpers for classifier evaluation results."""
import numpy as np
import pandas as pd
import seaborn as sns
[docs]
def plot_precision_recall(ax, metric_data):
"""Strip plot of per-fold precision/recall with median +/- 95% CI."""
precisions = [m["precision"] for m in metric_data]
recalls = [m["recall"] for m in metric_data]
df = pd.DataFrame(data=[precisions, recalls], index=["precision", "recall"]).T
sns.stripplot(ax=ax, data=df, jitter=0.04, color="k", size=3)
for x, values in enumerate([precisions, recalls]):
ax.errorbar(
x=x,
y=np.nanmedian(values),
yerr=1.96 * np.std(values) / np.sqrt(len(values)),
marker="o",
color="orange",
markeredgecolor="w",
markersize=5,
zorder=np.inf,
)
ax.spines[["right", "top"]].set_visible(False)
ax.spines["bottom"].set_position(("axes", -0.05))
ax.yaxis.set_ticks_position("left")
ax.spines["left"].set_position(("axes", -0.05))
ax.set_ylim([0, 1])
return ax