diff options
| author | YurenHao0426 <Blackhao0426@gmail.com> | 2026-08-29 13:23:23 -0500 |
|---|---|---|
| committer | YurenHao0426 <Blackhao0426@gmail.com> | 2026-08-29 13:23:23 -0500 |
| commit | 9f05c59fe8884b1900a36c80a652117414d9c0a4 (patch) | |
| tree | 5aeb3d70db494948a81841ee0c662e773ed99270 | |
| parent | bbd95ee195772e0fe02f3887880aa80c7cbb04f2 (diff) | |
fig: plot physical grid bias crossover
| -rw-r--r-- | experiments/plot_physical_grid_p5.py | 156 | ||||
| -rw-r--r-- | results/figs/physical_grid_p5.pdf | bin | 0 -> 30357 bytes | |||
| -rw-r--r-- | results/figs/physical_grid_p5.png | bin | 0 -> 144310 bytes | |||
| -rw-r--r-- | results/figs/physical_grid_p5.svg | 876 | ||||
| -rw-r--r-- | visual-composer/physical-grid-p5-contract.md | 15 |
5 files changed, 1047 insertions, 0 deletions
diff --git a/experiments/plot_physical_grid_p5.py b/experiments/plot_physical_grid_p5.py new file mode 100644 index 0000000..bc86647 --- /dev/null +++ b/experiments/plot_physical_grid_p5.py @@ -0,0 +1,156 @@ +#!/usr/bin/env python3 +"""Plot the P5 physical-grid classification crossover from committed JSON.""" + +from __future__ import annotations + +import argparse +import json +from pathlib import Path + +import matplotlib.pyplot as plt +import numpy as np + + +METHOD_STYLE = { + "raw": { + "label": "Raw local update", + "color": "#666666", + "marker": "x", + "linestyle": ":", + }, + "constant": { + "label": "Constant calibration", + "color": "#E69F00", + "marker": "^", + "linestyle": "--", + }, + "sdil": { + "label": "SDIL", + "color": "#0072B2", + "marker": "o", + "linestyle": "-", + }, + "overclamp": { + "label": "Overclamping", + "color": "#222222", + "marker": "D", + "linestyle": "--", + }, + "overclamp_sdil": { + "label": "Overclamping + SDIL", + "color": "#009E73", + "marker": "s", + "linestyle": "-", + }, +} + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument( + "--input", type=Path, + default=Path("results/physical_bias/p5_grid_bias_crossover.json")) + parser.add_argument( + "--output-prefix", type=Path, + default=Path("results/figs/physical_grid_p5")) + return parser.parse_args() + + +def values_by_diameter(records: list[dict], method: str) -> tuple[np.ndarray, list[np.ndarray]]: + diameters = np.asarray(sorted({ + record["input_diameter_v"] for record in records + })) + values = [] + for diameter in diameters: + values.append(np.asarray([ + 100.0 * record["methods"][method]["classification_error"] + for record in records + if record["input_diameter_v"] == diameter + ])) + return 1_000.0 * diameters, values + + +def draw_panel( + axis: plt.Axes, + records: list[dict], + methods: tuple[str, ...], + title: str, +) -> None: + offsets = np.linspace(-3.0, 3.0, len(methods)) + for method_index, method in enumerate(methods): + diameters, values = values_by_diameter(records, method) + style = METHOD_STYLE[method] + for diameter, trial_values in zip(diameters, values): + trial_jitter = np.linspace(-1.5, 1.5, len(trial_values)) + axis.scatter( + diameter + offsets[method_index] + trial_jitter, + trial_values, + color=style["color"], + marker=style["marker"], + s=18, + alpha=0.28, + linewidths=0.8, + zorder=2, + ) + means = np.asarray([np.mean(trials) for trials in values]) + axis.plot( + diameters, + means, + label=style["label"], + color=style["color"], + marker=style["marker"], + linestyle=style["linestyle"], + linewidth=1.8, + markersize=5.5, + markerfacecolor=( + "white" if method in {"sdil", "overclamp_sdil"} + else style["color"]), + markeredgewidth=1.2, + zorder=3, + ) + axis.set_title(title, loc="left", fontsize=10, fontweight="bold") + axis.set_xlabel("Input diameter (mV)") + axis.set_xticks(diameters) + axis.set_ylim(-2.0, 80.0) + axis.set_yticks((0, 20, 40, 60, 80)) + axis.grid(axis="y", color="#D9D9D9", linewidth=0.7, zorder=0) + axis.spines[["top", "right"]].set_visible(False) + axis.legend(frameon=False, fontsize=8.5, loc="upper right") + + +def main() -> None: + args = parse_args() + report = json.loads(args.input.read_text()) + records = report["records"] + plt.rcParams.update({ + "font.family": "DejaVu Sans", + "font.size": 9, + "axes.labelsize": 9, + "xtick.labelsize": 8, + "ytick.labelsize": 8, + "svg.fonttype": "none", + "pdf.fonttype": 42, + }) + figure, axes = plt.subplots( + 1, 2, figsize=(7.1, 2.75), sharey=True, constrained_layout=True) + draw_panel( + axes[0], records, ("raw", "constant", "sdil"), + "(a) Standard local learning") + draw_panel( + axes[1], records, ("overclamp", "overclamp_sdil"), + "(b) Composition with overclamping") + axes[0].set_ylabel("Classification error (%)") + axes[1].text( + 0.98, 0.82, "8 trials per input diameter", + transform=axes[1].transAxes, ha="right", va="top", + fontsize=8, color="#666666") + args.output_prefix.parent.mkdir(parents=True, exist_ok=True) + figure.savefig(args.output_prefix.with_suffix(".svg")) + figure.savefig(args.output_prefix.with_suffix(".pdf")) + figure.savefig(args.output_prefix.with_suffix(".png"), dpi=300) + plt.close(figure) + print(f"wrote {args.output_prefix}.{{svg,pdf,png}}") + + +if __name__ == "__main__": + main() diff --git a/results/figs/physical_grid_p5.pdf b/results/figs/physical_grid_p5.pdf Binary files differnew file mode 100644 index 0000000..2d77906 --- /dev/null +++ b/results/figs/physical_grid_p5.pdf diff --git a/results/figs/physical_grid_p5.png b/results/figs/physical_grid_p5.png Binary files differnew file mode 100644 index 0000000..84d69ce --- /dev/null +++ b/results/figs/physical_grid_p5.png diff --git a/results/figs/physical_grid_p5.svg b/results/figs/physical_grid_p5.svg new file mode 100644 index 0000000..3e1df50 --- /dev/null +++ b/results/figs/physical_grid_p5.svg @@ -0,0 +1,876 @@ +<?xml version="1.0" encoding="utf-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="511.2pt" height="198pt" viewBox="0 0 511.2 198" xmlns="http://www.w3.org/2000/svg" version="1.1"> + <metadata> + <rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> + <cc:Work> + <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> + <dc:date>2026-08-29T13:23:14.218343</dc:date> + <dc:format>image/svg+xml</dc:format> + <dc:creator> + <cc:Agent> + <dc:title>Matplotlib v3.10.8, https://matplotlib.org/</dc:title> + </cc:Agent> + </dc:creator> + </cc:Work> + </rdf:RDF> + </metadata> + <defs> + <style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style> + </defs> + <g id="figure_1"> + <g id="patch_1"> + <path d="M 0 198 +L 511.2 198 +L 511.2 0 +L 0 0 +z +" style="fill: #ffffff"/> + </g> + <g id="axes_1"> + <g id="patch_2"> + <path d="M 32.890553 167.546948 +L 265.794916 167.546948 +L 265.794916 16.598678 +L 32.890553 16.598678 +z +" style="fill: #ffffff"/> + </g> + <g id="matplotlib.axis_1"> + <g id="xtick_1"> + <g id="line2d_1"> + <defs> + <path id="maa742e34ce" d="M 0 0 +L 0 3.5 +" style="stroke: #000000; stroke-width: 0.8"/> + </defs> + <g> + <use xlink:href="#maa742e34ce" x="46.258645" y="167.546948" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_1"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: middle" x="46.258645" y="180.625698" transform="rotate(-0 46.258645 180.625698)">83.4</text> + </g> + </g> + <g id="xtick_2"> + <g id="line2d_2"> + <g> + <use xlink:href="#maa742e34ce" x="97.80069" y="167.546948" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_2"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: middle" x="97.80069" y="180.625698" transform="rotate(-0 97.80069 180.625698)">166.8</text> + </g> + </g> + <g id="xtick_3"> + <g id="line2d_3"> + <g> + <use xlink:href="#maa742e34ce" x="149.342734" y="167.546948" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_3"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: middle" x="149.342734" y="180.625698" transform="rotate(-0 149.342734 180.625698)">250.2</text> + </g> + </g> + <g id="xtick_4"> + <g id="line2d_4"> + <g> + <use xlink:href="#maa742e34ce" x="200.884779" y="167.546948" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_4"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: middle" x="200.884779" y="180.625698" transform="rotate(-0 200.884779 180.625698)">333.5</text> + </g> + </g> + <g id="xtick_5"> + <g id="line2d_5"> + <g> + <use xlink:href="#maa742e34ce" x="252.426824" y="167.546948" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_5"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: middle" x="252.426824" y="180.625698" transform="rotate(-0 252.426824 180.625698)">416.9</text> + </g> + </g> + <g id="text_6"> + <text style="font-size: 9px; font-family: 'DejaVu Sans'; text-anchor: middle" x="149.342734" y="193.128041" transform="rotate(-0 149.342734 193.128041)">Input diameter (mV)</text> + </g> + </g> + <g id="matplotlib.axis_2"> + <g id="ytick_1"> + <g id="line2d_6"> + <path d="M 32.890553 163.865282 +L 265.794916 163.865282 +" clip-path="url(#pa4f89eeedc)" style="fill: none; stroke: #d9d9d9; stroke-width: 0.7; stroke-linecap: square"/> + </g> + <g id="line2d_7"> + <defs> + <path id="mf68b322087" d="M 0 0 +L -3.5 0 +" style="stroke: #000000; stroke-width: 0.8"/> + </defs> + <g> + <use xlink:href="#mf68b322087" x="32.890553" y="163.865282" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_7"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: end" x="25.890553" y="166.904657" transform="rotate(-0 25.890553 166.904657)">0</text> + </g> + </g> + <g id="ytick_2"> + <g id="line2d_8"> + <path d="M 32.890553 127.048631 +L 265.794916 127.048631 +" clip-path="url(#pa4f89eeedc)" style="fill: none; stroke: #d9d9d9; stroke-width: 0.7; stroke-linecap: square"/> + </g> + <g id="line2d_9"> + <g> + <use xlink:href="#mf68b322087" x="32.890553" y="127.048631" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_8"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: end" x="25.890553" y="130.088006" transform="rotate(-0 25.890553 130.088006)">20</text> + </g> + </g> + <g id="ytick_3"> + <g id="line2d_10"> + <path d="M 32.890553 90.23198 +L 265.794916 90.23198 +" clip-path="url(#pa4f89eeedc)" style="fill: none; stroke: #d9d9d9; stroke-width: 0.7; stroke-linecap: square"/> + </g> + <g id="line2d_11"> + <g> + <use xlink:href="#mf68b322087" x="32.890553" y="90.23198" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_9"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: end" x="25.890553" y="93.271355" transform="rotate(-0 25.890553 93.271355)">40</text> + </g> + </g> + <g id="ytick_4"> + <g id="line2d_12"> + <path d="M 32.890553 53.415329 +L 265.794916 53.415329 +" clip-path="url(#pa4f89eeedc)" style="fill: none; stroke: #d9d9d9; stroke-width: 0.7; stroke-linecap: square"/> + </g> + <g id="line2d_13"> + <g> + <use xlink:href="#mf68b322087" x="32.890553" y="53.415329" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_10"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: end" x="25.890553" y="56.454704" transform="rotate(-0 25.890553 56.454704)">60</text> + </g> + </g> + <g id="ytick_5"> + <g id="line2d_14"> + <path d="M 32.890553 16.598677 +L 265.794916 16.598677 +" clip-path="url(#pa4f89eeedc)" style="fill: none; stroke: #d9d9d9; stroke-width: 0.7; stroke-linecap: square"/> + </g> + <g id="line2d_15"> + <g> + <use xlink:href="#mf68b322087" x="32.890553" y="16.598677" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_11"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: end" x="25.890553" y="19.638052" transform="rotate(-0 25.890553 19.638052)">80</text> + </g> + </g> + <g id="text_12"> + <text style="font-size: 9px; font-family: 'DejaVu Sans'; text-anchor: middle" x="9.838834" y="92.072812" transform="rotate(-90 9.838834 92.072812)">Classification error (%)</text> + </g> + </g> + <g id="PathCollection_1"> + <defs> + <path id="ma2986a139c" d="M -2.12132 2.12132 +L 2.12132 -2.12132 +M -2.12132 -2.12132 +L 2.12132 2.12132 +" style="stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + </defs> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#ma2986a139c" x="43.477114" y="71.823654" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="43.742022" y="117.844468" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="44.00693" y="71.823654" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="44.271838" y="48.813247" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="44.536745" y="71.823654" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="44.801653" y="140.854875" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="45.066561" y="94.834061" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="45.331468" y="48.813247" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_2"> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#ma2986a139c" x="95.019159" y="71.823654" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="95.284067" y="117.844468" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="95.548974" y="94.834061" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="95.813882" y="71.823654" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="96.07879" y="71.823654" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="96.343698" y="163.865282" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="96.608605" y="117.844468" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="96.873513" y="25.80284" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_3"> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#ma2986a139c" x="146.561204" y="140.854875" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="146.826111" y="140.854875" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="147.091019" y="117.844468" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="147.355927" y="71.823654" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="147.620834" y="71.823654" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="147.885742" y="163.865282" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="148.15065" y="163.865282" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="148.415557" y="48.813247" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_4"> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#ma2986a139c" x="198.103248" y="140.854875" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="198.368156" y="163.865282" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="198.633064" y="140.854875" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="198.897971" y="163.865282" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="199.162879" y="117.844468" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="199.427787" y="163.865282" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="199.692694" y="163.865282" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="199.957602" y="71.823654" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_5"> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#ma2986a139c" x="249.645293" y="140.854875" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="249.910201" y="163.865282" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="250.175108" y="163.865282" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="250.440016" y="163.865282" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="250.704924" y="140.854875" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="250.969831" y="163.865282" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="251.234739" y="163.865282" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#ma2986a139c" x="251.499647" y="94.834061" style="fill: #666666; fill-opacity: 0.28; stroke: #666666; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_6"> + <defs> + <path id="me9c717d270" d="M 0 -2.12132 +L -2.12132 2.12132 +L 2.12132 2.12132 +z +" style="stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + </defs> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#me9c717d270" x="45.331468" y="117.844468" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="45.596376" y="117.844468" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="45.861284" y="140.854875" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="46.126191" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="46.391099" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="46.656007" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="46.920914" y="140.854875" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="47.185822" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_7"> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#me9c717d270" x="96.873513" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="97.138421" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="97.403328" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="97.668236" y="117.844468" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="97.933144" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="98.198051" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="98.462959" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="98.727867" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_8"> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#me9c717d270" x="148.415557" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="148.680465" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="148.945373" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="149.210281" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="149.475188" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="149.740096" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="150.005004" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="150.269911" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_9"> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#me9c717d270" x="199.957602" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="200.22251" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="200.487417" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="200.752325" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="201.017233" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="201.282141" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="201.547048" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="201.811956" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_10"> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#me9c717d270" x="251.499647" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="251.764554" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="252.029462" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="252.29437" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="252.559277" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="252.824185" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="253.089093" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#me9c717d270" x="253.354" y="163.865282" style="fill: #e69f00; fill-opacity: 0.28; stroke: #e69f00; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_11"> + <defs> + <path id="m13cc036b4c" d="M 0 2.12132 +C 0.562581 2.12132 1.102195 1.897805 1.5 1.5 +C 1.897805 1.102195 2.12132 0.562581 2.12132 0 +C 2.12132 -0.562581 1.897805 -1.102195 1.5 -1.5 +C 1.102195 -1.897805 0.562581 -2.12132 0 -2.12132 +C -0.562581 -2.12132 -1.102195 -1.897805 -1.5 -1.5 +C -1.897805 -1.102195 -2.12132 -0.562581 -2.12132 0 +C -2.12132 0.562581 -1.897805 1.102195 -1.5 1.5 +C -1.102195 1.897805 -0.562581 2.12132 0 2.12132 +z +" style="stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + </defs> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#m13cc036b4c" x="47.185822" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="47.45073" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="47.715637" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="47.980545" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="48.245453" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="48.51036" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="48.775268" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="49.040176" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_12"> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#m13cc036b4c" x="98.727867" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="98.992774" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="99.257682" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="99.52259" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="99.787497" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="100.052405" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="100.317313" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="100.58222" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_13"> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#m13cc036b4c" x="150.269911" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="150.534819" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="150.799727" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="151.064634" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="151.329542" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="151.59445" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="151.859357" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="152.124265" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_14"> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#m13cc036b4c" x="201.811956" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="202.076864" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="202.341771" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="202.606679" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="202.871587" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="203.136494" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="203.401402" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="203.66631" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_15"> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#m13cc036b4c" x="253.354" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="253.618908" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="253.883816" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="254.148724" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="254.413631" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="254.678539" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="254.943447" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m13cc036b4c" x="255.208354" y="163.865282" style="fill: #0072b2; fill-opacity: 0.28; stroke: #0072b2; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="patch_3"> + <path d="M 32.890553 167.546948 +L 32.890553 16.598677 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + <g id="patch_4"> + <path d="M 32.890553 167.546948 +L 265.794916 167.546948 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + <g id="line2d_16"> + <path d="M 46.258645 83.328858 +L 97.80069 91.95776 +L 149.342734 114.968167 +L 200.884779 140.854875 +L 252.426824 149.483778 +" clip-path="url(#pa4f89eeedc)" style="fill: none; stroke-dasharray: 1.8,2.97; stroke-dashoffset: 0; stroke: #666666; stroke-width: 1.8"/> + <defs> + <path id="mf77a3e8b11" d="M -2.75 2.75 +L 2.75 -2.75 +M -2.75 -2.75 +L 2.75 2.75 +" style="stroke: #666666; stroke-width: 1.2"/> + </defs> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#mf77a3e8b11" x="46.258645" y="83.328858" style="fill: #666666; stroke: #666666; stroke-width: 1.2"/> + <use xlink:href="#mf77a3e8b11" x="97.80069" y="91.95776" style="fill: #666666; stroke: #666666; stroke-width: 1.2"/> + <use xlink:href="#mf77a3e8b11" x="149.342734" y="114.968167" style="fill: #666666; stroke: #666666; stroke-width: 1.2"/> + <use xlink:href="#mf77a3e8b11" x="200.884779" y="140.854875" style="fill: #666666; stroke: #666666; stroke-width: 1.2"/> + <use xlink:href="#mf77a3e8b11" x="252.426824" y="149.483778" style="fill: #666666; stroke: #666666; stroke-width: 1.2"/> + </g> + </g> + <g id="line2d_17"> + <path d="M 46.258645 146.607477 +L 97.80069 158.112681 +L 149.342734 163.865282 +L 200.884779 163.865282 +L 252.426824 163.865282 +" clip-path="url(#pa4f89eeedc)" style="fill: none; stroke-dasharray: 6.66,2.88; stroke-dashoffset: 0; stroke: #e69f00; stroke-width: 1.8"/> + <defs> + <path id="ma0aec3fcd3" d="M 0 -2.75 +L -2.75 2.75 +L 2.75 2.75 +z +" style="stroke: #e69f00; stroke-width: 1.2; stroke-linejoin: miter"/> + </defs> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#ma0aec3fcd3" x="46.258645" y="146.607477" style="fill: #e69f00; stroke: #e69f00; stroke-width: 1.2; stroke-linejoin: miter"/> + <use xlink:href="#ma0aec3fcd3" x="97.80069" y="158.112681" style="fill: #e69f00; stroke: #e69f00; stroke-width: 1.2; stroke-linejoin: miter"/> + <use xlink:href="#ma0aec3fcd3" x="149.342734" y="163.865282" style="fill: #e69f00; stroke: #e69f00; stroke-width: 1.2; stroke-linejoin: miter"/> + <use xlink:href="#ma0aec3fcd3" x="200.884779" y="163.865282" style="fill: #e69f00; stroke: #e69f00; stroke-width: 1.2; stroke-linejoin: miter"/> + <use xlink:href="#ma0aec3fcd3" x="252.426824" y="163.865282" style="fill: #e69f00; stroke: #e69f00; stroke-width: 1.2; stroke-linejoin: miter"/> + </g> + </g> + <g id="line2d_18"> + <path d="M 46.258645 163.865282 +L 97.80069 163.865282 +L 149.342734 163.865282 +L 200.884779 163.865282 +L 252.426824 163.865282 +" clip-path="url(#pa4f89eeedc)" style="fill: none; stroke: #0072b2; stroke-width: 1.8; stroke-linecap: square"/> + <defs> + <path id="m766a015a19" d="M 0 2.75 +C 0.729309 2.75 1.428845 2.460243 1.944544 1.944544 +C 2.460243 1.428845 2.75 0.729309 2.75 0 +C 2.75 -0.729309 2.460243 -1.428845 1.944544 -1.944544 +C 1.428845 -2.460243 0.729309 -2.75 0 -2.75 +C -0.729309 -2.75 -1.428845 -2.460243 -1.944544 -1.944544 +C -2.460243 -1.428845 -2.75 -0.729309 -2.75 0 +C -2.75 0.729309 -2.460243 1.428845 -1.944544 1.944544 +C -1.428845 2.460243 -0.729309 2.75 0 2.75 +z +" style="stroke: #0072b2; stroke-width: 1.2"/> + </defs> + <g clip-path="url(#pa4f89eeedc)"> + <use xlink:href="#m766a015a19" x="46.258645" y="163.865282" style="fill: #ffffff; stroke: #0072b2; stroke-width: 1.2"/> + <use xlink:href="#m766a015a19" x="97.80069" y="163.865282" style="fill: #ffffff; stroke: #0072b2; stroke-width: 1.2"/> + <use xlink:href="#m766a015a19" x="149.342734" y="163.865282" style="fill: #ffffff; stroke: #0072b2; stroke-width: 1.2"/> + <use xlink:href="#m766a015a19" x="200.884779" y="163.865282" style="fill: #ffffff; stroke: #0072b2; stroke-width: 1.2"/> + <use xlink:href="#m766a015a19" x="252.426824" y="163.865282" style="fill: #ffffff; stroke: #0072b2; stroke-width: 1.2"/> + </g> + </g> + <g id="text_13"> + <text style="font-weight: 700; font-size: 10px; font-family: 'DejaVu Sans'; text-anchor: start" x="32.890553" y="10.598678" transform="rotate(-0 32.890553 10.598678)">(a) Standard local learning</text> + </g> + <g id="legend_1"> + <g id="line2d_19"> + <path d="M 148.445776 27.732349 +L 156.945776 27.732349 +L 165.445776 27.732349 +" style="fill: none; stroke-dasharray: 1.8,2.97; stroke-dashoffset: 0; stroke: #666666; stroke-width: 1.8"/> + <g> + <use xlink:href="#mf77a3e8b11" x="156.945776" y="27.732349" style="fill: #666666; stroke: #666666; stroke-width: 1.2"/> + </g> + </g> + <g id="text_14"> + <text style="font-size: 8.5px; font-family: 'DejaVu Sans'; text-anchor: start" x="172.245776" y="30.707349" transform="rotate(-0 172.245776 30.707349)">Raw local update</text> + </g> + <g id="line2d_20"> + <path d="M 148.445776 40.208756 +L 156.945776 40.208756 +L 165.445776 40.208756 +" style="fill: none; stroke-dasharray: 6.66,2.88; stroke-dashoffset: 0; stroke: #e69f00; stroke-width: 1.8"/> + <g> + <use xlink:href="#ma0aec3fcd3" x="156.945776" y="40.208756" style="fill: #e69f00; stroke: #e69f00; stroke-width: 1.2; stroke-linejoin: miter"/> + </g> + </g> + <g id="text_15"> + <text style="font-size: 8.5px; font-family: 'DejaVu Sans'; text-anchor: start" x="172.245776" y="43.183756" transform="rotate(-0 172.245776 43.183756)">Constant calibration</text> + </g> + <g id="line2d_21"> + <path d="M 148.445776 52.685162 +L 156.945776 52.685162 +L 165.445776 52.685162 +" style="fill: none; stroke: #0072b2; stroke-width: 1.8; stroke-linecap: square"/> + <g> + <use xlink:href="#m766a015a19" x="156.945776" y="52.685162" style="fill: #ffffff; stroke: #0072b2; stroke-width: 1.2"/> + </g> + </g> + <g id="text_16"> + <text style="font-size: 8.5px; font-family: 'DejaVu Sans'; text-anchor: start" x="172.245776" y="55.660162" transform="rotate(-0 172.245776 55.660162)">SDIL</text> + </g> + </g> + </g> + <g id="axes_2"> + <g id="patch_5"> + <path d="M 275.295396 167.546948 +L 508.19976 167.546948 +L 508.19976 16.598678 +L 275.295396 16.598678 +z +" style="fill: #ffffff"/> + </g> + <g id="matplotlib.axis_3"> + <g id="xtick_6"> + <g id="line2d_22"> + <g> + <use xlink:href="#maa742e34ce" x="288.663489" y="167.546948" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_17"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: middle" x="288.663489" y="180.625698" transform="rotate(-0 288.663489 180.625698)">83.4</text> + </g> + </g> + <g id="xtick_7"> + <g id="line2d_23"> + <g> + <use xlink:href="#maa742e34ce" x="340.205534" y="167.546948" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_18"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: middle" x="340.205534" y="180.625698" transform="rotate(-0 340.205534 180.625698)">166.8</text> + </g> + </g> + <g id="xtick_8"> + <g id="line2d_24"> + <g> + <use xlink:href="#maa742e34ce" x="391.747578" y="167.546948" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_19"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: middle" x="391.747578" y="180.625698" transform="rotate(-0 391.747578 180.625698)">250.2</text> + </g> + </g> + <g id="xtick_9"> + <g id="line2d_25"> + <g> + <use xlink:href="#maa742e34ce" x="443.289623" y="167.546948" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_20"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: middle" x="443.289623" y="180.625698" transform="rotate(-0 443.289623 180.625698)">333.5</text> + </g> + </g> + <g id="xtick_10"> + <g id="line2d_26"> + <g> + <use xlink:href="#maa742e34ce" x="494.831667" y="167.546948" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + <g id="text_21"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: middle" x="494.831667" y="180.625698" transform="rotate(-0 494.831667 180.625698)">416.9</text> + </g> + </g> + <g id="text_22"> + <text style="font-size: 9px; font-family: 'DejaVu Sans'; text-anchor: middle" x="391.747578" y="193.128041" transform="rotate(-0 391.747578 193.128041)">Input diameter (mV)</text> + </g> + </g> + <g id="matplotlib.axis_4"> + <g id="ytick_6"> + <g id="line2d_27"> + <path d="M 275.295396 163.865282 +L 508.19976 163.865282 +" clip-path="url(#p7057e75bc4)" style="fill: none; stroke: #d9d9d9; stroke-width: 0.7; stroke-linecap: square"/> + </g> + <g id="line2d_28"> + <g> + <use xlink:href="#mf68b322087" x="275.295396" y="163.865282" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + </g> + <g id="ytick_7"> + <g id="line2d_29"> + <path d="M 275.295396 127.048631 +L 508.19976 127.048631 +" clip-path="url(#p7057e75bc4)" style="fill: none; stroke: #d9d9d9; stroke-width: 0.7; stroke-linecap: square"/> + </g> + <g id="line2d_30"> + <g> + <use xlink:href="#mf68b322087" x="275.295396" y="127.048631" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + </g> + <g id="ytick_8"> + <g id="line2d_31"> + <path d="M 275.295396 90.23198 +L 508.19976 90.23198 +" clip-path="url(#p7057e75bc4)" style="fill: none; stroke: #d9d9d9; stroke-width: 0.7; stroke-linecap: square"/> + </g> + <g id="line2d_32"> + <g> + <use xlink:href="#mf68b322087" x="275.295396" y="90.23198" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + </g> + <g id="ytick_9"> + <g id="line2d_33"> + <path d="M 275.295396 53.415329 +L 508.19976 53.415329 +" clip-path="url(#p7057e75bc4)" style="fill: none; stroke: #d9d9d9; stroke-width: 0.7; stroke-linecap: square"/> + </g> + <g id="line2d_34"> + <g> + <use xlink:href="#mf68b322087" x="275.295396" y="53.415329" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + </g> + <g id="ytick_10"> + <g id="line2d_35"> + <path d="M 275.295396 16.598677 +L 508.19976 16.598677 +" clip-path="url(#p7057e75bc4)" style="fill: none; stroke: #d9d9d9; stroke-width: 0.7; stroke-linecap: square"/> + </g> + <g id="line2d_36"> + <g> + <use xlink:href="#mf68b322087" x="275.295396" y="16.598677" style="stroke: #000000; stroke-width: 0.8"/> + </g> + </g> + </g> + </g> + <g id="PathCollection_16"> + <defs> + <path id="md1b32db0f4" d="M -0 3 +L 3 0 +L 0 -3 +L -3 -0 +z +" style="stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + </defs> + <g clip-path="url(#p7057e75bc4)"> + <use xlink:href="#md1b32db0f4" x="285.881958" y="140.854875" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="286.146866" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="286.411774" y="140.854875" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="286.676681" y="117.844468" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="286.941589" y="117.844468" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="287.206497" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="287.471404" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="287.736312" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_17"> + <g clip-path="url(#p7057e75bc4)"> + <use xlink:href="#md1b32db0f4" x="337.424003" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="337.688911" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="337.953818" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="338.218726" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="338.483634" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="338.748541" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="339.013449" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="339.278357" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_18"> + <g clip-path="url(#p7057e75bc4)"> + <use xlink:href="#md1b32db0f4" x="388.966047" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="389.230955" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="389.495863" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="389.76077" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="390.025678" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="390.290586" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="390.555494" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="390.820401" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_19"> + <g clip-path="url(#p7057e75bc4)"> + <use xlink:href="#md1b32db0f4" x="440.508092" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="440.773" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="441.037907" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="441.302815" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="441.567723" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="441.83263" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="442.097538" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="442.362446" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_20"> + <g clip-path="url(#p7057e75bc4)"> + <use xlink:href="#md1b32db0f4" x="492.050137" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="492.315044" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="492.579952" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="492.84486" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="493.109767" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="493.374675" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="493.639583" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#md1b32db0f4" x="493.90449" y="163.865282" style="fill: #222222; fill-opacity: 0.28; stroke: #222222; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_21"> + <defs> + <path id="m901dd4e3a3" d="M -2.12132 2.12132 +L 2.12132 2.12132 +L 2.12132 -2.12132 +L -2.12132 -2.12132 +z +" style="stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + </defs> + <g clip-path="url(#p7057e75bc4)"> + <use xlink:href="#m901dd4e3a3" x="289.590666" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="289.855574" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="290.120481" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="290.385389" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="290.650297" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="290.915204" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="291.180112" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="291.44502" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_22"> + <g clip-path="url(#p7057e75bc4)"> + <use xlink:href="#m901dd4e3a3" x="341.13271" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="341.397618" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="341.662526" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="341.927433" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="342.192341" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="342.457249" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="342.722157" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="342.987064" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_23"> + <g clip-path="url(#p7057e75bc4)"> + <use xlink:href="#m901dd4e3a3" x="392.674755" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="392.939663" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="393.20457" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="393.469478" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="393.734386" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="393.999293" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="394.264201" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="394.529109" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_24"> + <g clip-path="url(#p7057e75bc4)"> + <use xlink:href="#m901dd4e3a3" x="444.2168" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="444.481707" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="444.746615" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="445.011523" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="445.27643" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="445.541338" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="445.806246" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="446.071153" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="PathCollection_25"> + <g clip-path="url(#p7057e75bc4)"> + <use xlink:href="#m901dd4e3a3" x="495.758844" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="496.023752" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="496.28866" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="496.553567" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="496.818475" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="497.083383" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="497.34829" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + <use xlink:href="#m901dd4e3a3" x="497.613198" y="163.865282" style="fill: #009e73; fill-opacity: 0.28; stroke: #009e73; stroke-opacity: 0.28; stroke-width: 0.8"/> + </g> + </g> + <g id="patch_6"> + <path d="M 275.295396 167.546948 +L 275.295396 16.598677 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + <g id="patch_7"> + <path d="M 275.295396 167.546948 +L 508.19976 167.546948 +" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/> + </g> + <g id="line2d_37"> + <path d="M 288.663489 146.607477 +L 340.205534 163.865282 +L 391.747578 163.865282 +L 443.289623 163.865282 +L 494.831667 163.865282 +" clip-path="url(#p7057e75bc4)" style="fill: none; stroke-dasharray: 6.66,2.88; stroke-dashoffset: 0; stroke: #222222; stroke-width: 1.8"/> + <defs> + <path id="mb382bcbe3b" d="M -0 3.889087 +L 3.889087 0 +L 0 -3.889087 +L -3.889087 -0 +z +" style="stroke: #222222; stroke-width: 1.2; stroke-linejoin: miter"/> + </defs> + <g clip-path="url(#p7057e75bc4)"> + <use xlink:href="#mb382bcbe3b" x="288.663489" y="146.607477" style="fill: #222222; stroke: #222222; stroke-width: 1.2; stroke-linejoin: miter"/> + <use xlink:href="#mb382bcbe3b" x="340.205534" y="163.865282" style="fill: #222222; stroke: #222222; stroke-width: 1.2; stroke-linejoin: miter"/> + <use xlink:href="#mb382bcbe3b" x="391.747578" y="163.865282" style="fill: #222222; stroke: #222222; stroke-width: 1.2; stroke-linejoin: miter"/> + <use xlink:href="#mb382bcbe3b" x="443.289623" y="163.865282" style="fill: #222222; stroke: #222222; stroke-width: 1.2; stroke-linejoin: miter"/> + <use xlink:href="#mb382bcbe3b" x="494.831667" y="163.865282" style="fill: #222222; stroke: #222222; stroke-width: 1.2; stroke-linejoin: miter"/> + </g> + </g> + <g id="line2d_38"> + <path d="M 288.663489 163.865282 +L 340.205534 163.865282 +L 391.747578 163.865282 +L 443.289623 163.865282 +L 494.831667 163.865282 +" clip-path="url(#p7057e75bc4)" style="fill: none; stroke: #009e73; stroke-width: 1.8; stroke-linecap: square"/> + <defs> + <path id="m2e39a2c812" d="M -2.75 2.75 +L 2.75 2.75 +L 2.75 -2.75 +L -2.75 -2.75 +z +" style="stroke: #009e73; stroke-width: 1.2; stroke-linejoin: miter"/> + </defs> + <g clip-path="url(#p7057e75bc4)"> + <use xlink:href="#m2e39a2c812" x="288.663489" y="163.865282" style="fill: #ffffff; stroke: #009e73; stroke-width: 1.2; stroke-linejoin: miter"/> + <use xlink:href="#m2e39a2c812" x="340.205534" y="163.865282" style="fill: #ffffff; stroke: #009e73; stroke-width: 1.2; stroke-linejoin: miter"/> + <use xlink:href="#m2e39a2c812" x="391.747578" y="163.865282" style="fill: #ffffff; stroke: #009e73; stroke-width: 1.2; stroke-linejoin: miter"/> + <use xlink:href="#m2e39a2c812" x="443.289623" y="163.865282" style="fill: #ffffff; stroke: #009e73; stroke-width: 1.2; stroke-linejoin: miter"/> + <use xlink:href="#m2e39a2c812" x="494.831667" y="163.865282" style="fill: #ffffff; stroke: #009e73; stroke-width: 1.2; stroke-linejoin: miter"/> + </g> + </g> + <g id="text_23"> + <text style="font-size: 8px; font-family: 'DejaVu Sans'; text-anchor: end; fill: #666666" x="503.541673" y="49.848116" transform="rotate(-0 503.541673 49.848116)">8 trials per input diameter</text> + </g> + <g id="text_24"> + <text style="font-weight: 700; font-size: 10px; font-family: 'DejaVu Sans'; text-anchor: start" x="275.295396" y="10.598678" transform="rotate(-0 275.295396 10.598678)">(b) Composition with overclamping</text> + </g> + <g id="legend_2"> + <g id="line2d_39"> + <path d="M 385.720073 27.732349 +L 394.220073 27.732349 +L 402.720073 27.732349 +" style="fill: none; stroke-dasharray: 6.66,2.88; stroke-dashoffset: 0; stroke: #222222; stroke-width: 1.8"/> + <g> + <use xlink:href="#mb382bcbe3b" x="394.220073" y="27.732349" style="fill: #222222; stroke: #222222; stroke-width: 1.2; stroke-linejoin: miter"/> + </g> + </g> + <g id="text_25"> + <text style="font-size: 8.5px; font-family: 'DejaVu Sans'; text-anchor: start" x="409.520073" y="30.707349" transform="rotate(-0 409.520073 30.707349)">Overclamping</text> + </g> + <g id="line2d_40"> + <path d="M 385.720073 40.208756 +L 394.220073 40.208756 +L 402.720073 40.208756 +" style="fill: none; stroke: #009e73; stroke-width: 1.8; stroke-linecap: square"/> + <g> + <use xlink:href="#m2e39a2c812" x="394.220073" y="40.208756" style="fill: #ffffff; stroke: #009e73; stroke-width: 1.2; stroke-linejoin: miter"/> + </g> + </g> + <g id="text_26"> + <text style="font-size: 8.5px; font-family: 'DejaVu Sans'; text-anchor: start" x="409.520073" y="43.183756" transform="rotate(-0 409.520073 43.183756)">Overclamping + SDIL</text> + </g> + </g> + </g> + </g> + <defs> + <clipPath id="pa4f89eeedc"> + <rect x="32.890553" y="16.598678" width="232.904364" height="150.94827"/> + </clipPath> + <clipPath id="p7057e75bc4"> + <rect x="275.295396" y="16.598678" width="232.904364" height="150.94827"/> + </clipPath> + </defs> +</svg> diff --git a/visual-composer/physical-grid-p5-contract.md b/visual-composer/physical-grid-p5-contract.md new file mode 100644 index 0000000..1c7b448 --- /dev/null +++ b/visual-composer/physical-grid-p5-contract.md @@ -0,0 +1,15 @@ +# Physical-grid P5 visual contract + +- Artifact: two-panel classification-error figure. +- Target format: full-width paper figure; editable SVG/PDF plus PNG preview. +- Core claim: local state-dependent residualization restores physical local learning and composes with overclamping. +- Reviewer question: does SDIL improve downstream classification over raw learning, constant calibration, and overclamping under the same component imperfections? +- Evidence layer: main result. +- Source data: `results/physical_bias/p5_grid_bias_crossover.json`. +- Statistics: eight trials per input diameter (two label rotations by four device draws); show every trial and the arithmetic mean, without inferred uncertainty intervals. +- Panel map: (a) raw, per-edge constant calibration, and SDIL under standard clamping; (b) overclamping and overclamping plus SDIL. +- Labels: classification error (%), input diameter (mV), method names, eight trials per diameter. +- Caption role: state the physical-grid setting, trial count, component-error model, and perfect-result counts without extending the evidence to hardware measurements. +- Output: `results/figs/physical_grid_p5.{svg,pdf,png}`. +- Traceability: plotting code reads the committed JSON directly; no values are copied by hand. + |
