figs: a5 dedup title->axis arrow + CSV, overlay onset dot->labeled vline

- a5: drop per-panel title (restated the axis); fold direction into the xlabel
  (DEPLOY hack rate (down=better) / solve (up=better)). Dump a5_generalisation.csv
  (per mode,arm deploy hack/solve mean+/-std) -- the reproducibility source it lacked.
- overlay (dyn_sub4_hack_overlay etc): replace the per-arm onset DOT with a single
  dashed labeled 'first hack' vertical line, matching the small-multiples/longrun.
- (dyn_sub4_hack_overlay shares dyn_sub4.csv -- same runs, different view, no new CSV.)

Co-Authored-By: Claudypoo <288921227+claudypoo@users.noreply.github.com>
This commit is contained in:
wassname
2026-06-05 04:13:37 +00:00
parent 8daf58d25e
commit 5242f66b7e
11 changed files with 889 additions and 917 deletions
+9
View File
@@ -0,0 +1,9 @@
mode,in_dist,arm,n_seed,deploy_hack_mean,deploy_hack_std,deploy_solve_mean,deploy_solve_std
run_tests,True,vanilla,1,1.000000,0.000000,0.000000,0.000000
file_marker,False,vanilla,1,0.625000,0.000000,0.375000,0.000000
stdout_marker,False,vanilla,1,0.166667,0.000000,0.645833,0.000000
sentinel,False,vanilla,1,0.416667,0.000000,0.583333,0.000000
run_tests,True,route,1,0.000000,0.000000,0.000000,0.000000
file_marker,False,route,1,0.020833,0.000000,0.354167,0.000000
stdout_marker,False,route,1,0.083333,0.000000,0.395833,0.000000
sentinel,False,route,1,0.000000,0.000000,0.666667,0.000000
1 mode in_dist arm n_seed deploy_hack_mean deploy_hack_std deploy_solve_mean deploy_solve_std
2 run_tests True vanilla 1 1.000000 0.000000 0.000000 0.000000
3 file_marker False vanilla 1 0.625000 0.000000 0.375000 0.000000
4 stdout_marker False vanilla 1 0.166667 0.000000 0.645833 0.000000
5 sentinel False vanilla 1 0.416667 0.000000 0.583333 0.000000
6 run_tests True route 1 0.000000 0.000000 0.000000 0.000000
7 file_marker False route 1 0.020833 0.000000 0.354167 0.000000
8 stdout_marker False route 1 0.083333 0.000000 0.395833 0.000000
9 sentinel False route 1 0.000000 0.000000 0.666667 0.000000
Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 42 KiB

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.
+49 -49
View File
@@ -6,7 +6,7 @@
<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-06-05T04:06:04.192641</dc:date>
<dc:date>2026-06-05T04:13:11.401703</dc:date>
<dc:format>image/svg+xml</dc:format>
<dc:creator>
<cc:Agent>
@@ -40,18 +40,18 @@ z
<g id="line2d_1">
<path d="M 75.878195 143.436625
L 75.878195 30.116625
" clip-path="url(#p76f8b7246d)" style="fill: none; stroke-dasharray: 3.2,2.4; stroke-dashoffset: 0; stroke: #8c8c8c; stroke-width: 0.8"/>
" clip-path="url(#pdea13af0ac)" style="fill: none; stroke-dasharray: 3.2,2.4; stroke-dashoffset: 0; stroke: #8c8c8c; stroke-width: 0.8"/>
</g>
<g id="matplotlib.axis_1">
<g id="xtick_1">
<g id="line2d_2">
<defs>
<path id="m5c63abc35b" d="M 0 0
<path id="m9a5a171291" d="M 0 0
L 0 3.5
" style="stroke: #000000; stroke-width: 0.8"/>
</defs>
<g>
<use xlink:href="#m5c63abc35b" x="48.435167" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m9a5a171291" x="48.435167" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_1">
@@ -87,7 +87,7 @@ z
<g id="xtick_2">
<g id="line2d_3">
<g>
<use xlink:href="#m5c63abc35b" x="74.992936" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m9a5a171291" x="74.992936" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_2">
@@ -117,7 +117,7 @@ z
<g id="xtick_3">
<g id="line2d_4">
<g>
<use xlink:href="#m5c63abc35b" x="101.550705" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m9a5a171291" x="101.550705" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_3">
@@ -157,7 +157,7 @@ z
<g id="xtick_4">
<g id="line2d_5">
<g>
<use xlink:href="#m5c63abc35b" x="128.108475" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m9a5a171291" x="128.108475" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_4">
@@ -205,7 +205,7 @@ z
<g id="xtick_5">
<g id="line2d_6">
<g>
<use xlink:href="#m5c63abc35b" x="154.666244" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m9a5a171291" x="154.666244" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_5">
@@ -240,7 +240,7 @@ z
<g id="xtick_6">
<g id="line2d_7">
<g>
<use xlink:href="#m5c63abc35b" x="181.224013" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m9a5a171291" x="181.224013" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_6">
@@ -281,7 +281,7 @@ z
<g id="xtick_7">
<g id="line2d_8">
<g>
<use xlink:href="#m5c63abc35b" x="207.781782" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m9a5a171291" x="207.781782" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_7">
@@ -548,12 +548,12 @@ z
<g id="ytick_1">
<g id="line2d_9">
<defs>
<path id="md1c0198530" d="M 0 0
<path id="mf4102281f5" d="M 0 0
L -3.5 0
" style="stroke: #000000; stroke-width: 0.8"/>
</defs>
<g>
<use xlink:href="#md1c0198530" x="40.600625" y="139.604548" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mf4102281f5" x="40.600625" y="139.604548" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_9">
@@ -577,7 +577,7 @@ z
<g id="ytick_2">
<g id="line2d_10">
<g>
<use xlink:href="#md1c0198530" x="40.600625" y="117.706963" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mf4102281f5" x="40.600625" y="117.706963" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_10">
@@ -592,7 +592,7 @@ z
<g id="ytick_3">
<g id="line2d_11">
<g>
<use xlink:href="#md1c0198530" x="40.600625" y="95.809379" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mf4102281f5" x="40.600625" y="95.809379" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_11">
@@ -607,7 +607,7 @@ z
<g id="ytick_4">
<g id="line2d_12">
<g>
<use xlink:href="#md1c0198530" x="40.600625" y="73.911794" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mf4102281f5" x="40.600625" y="73.911794" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_12">
@@ -622,7 +622,7 @@ z
<g id="ytick_5">
<g id="line2d_13">
<g>
<use xlink:href="#md1c0198530" x="40.600625" y="52.01421" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mf4102281f5" x="40.600625" y="52.01421" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_13">
@@ -678,7 +678,7 @@ z
<g id="ytick_6">
<g id="line2d_14">
<g>
<use xlink:href="#md1c0198530" x="40.600625" y="30.116625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mf4102281f5" x="40.600625" y="30.116625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_14">
@@ -855,7 +855,7 @@ L 197.158675 98.861038
L 199.814451 98.861038
L 202.470228 98.861038
L 205.126005 100.398536
" clip-path="url(#p76f8b7246d)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
" clip-path="url(#pdea13af0ac)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
</g>
<g id="line2d_16">
<path d="M 48.435167 139.604548
@@ -918,7 +918,7 @@ L 197.158675 100.090976
L 199.814451 100.090976
L 202.470228 100.090976
L 205.126005 99.393696
" clip-path="url(#p76f8b7246d)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
" clip-path="url(#pdea13af0ac)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
</g>
<g id="line2d_17">
<path d="M 48.435167 139.604548
@@ -981,7 +981,7 @@ L 197.158675 87.200024
L 199.814451 83.813356
L 202.470228 89.376144
L 205.126005 83.960675
" clip-path="url(#p76f8b7246d)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
" clip-path="url(#pdea13af0ac)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
</g>
<g id="line2d_18">
<path d="M 48.435167 139.604548
@@ -1044,7 +1044,7 @@ L 197.158675 95.384013
L 199.814451 94.255123
L 202.470228 96.109386
L 205.126005 94.584302
" clip-path="url(#p76f8b7246d)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/>
" clip-path="url(#pdea13af0ac)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/>
</g>
<g id="line2d_19">
<path d="M 48.435167 100.188896
@@ -1107,7 +1107,7 @@ L 197.158675 90.369273
L 199.814451 90.369273
L 202.470228 90.369273
L 205.126005 90.722802
" clip-path="url(#p76f8b7246d)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
" clip-path="url(#pdea13af0ac)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
</g>
<g id="line2d_20">
<path d="M 48.435167 97.999137
@@ -1170,7 +1170,7 @@ L 197.158675 87.496815
L 199.814451 87.496815
L 202.470228 87.496815
L 205.126005 88.442871
" clip-path="url(#p76f8b7246d)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
" clip-path="url(#pdea13af0ac)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
</g>
<g id="line2d_21">
<path d="M 48.435167 96.591435
@@ -1233,7 +1233,7 @@ L 197.158675 103.428228
L 199.814451 108.969863
L 202.470228 112.664286
L 205.126005 120.340946
" clip-path="url(#p76f8b7246d)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
" clip-path="url(#pdea13af0ac)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
</g>
<g id="line2d_22">
<path d="M 48.435167 98.259823
@@ -1296,7 +1296,7 @@ L 197.158675 93.764772
L 199.814451 95.611983
L 202.470228 96.843458
L 205.126005 99.83554
" clip-path="url(#p76f8b7246d)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/>
" clip-path="url(#pdea13af0ac)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/>
</g>
<g id="patch_3">
<path d="M 40.600625 143.436625
@@ -1534,13 +1534,13 @@ z
<g id="line2d_23">
<path d="M 331.821041 143.436625
L 331.821041 30.116625
" clip-path="url(#p476f65ca91)" style="fill: none; stroke-dasharray: 3.2,2.4; stroke-dashoffset: 0; stroke: #8c8c8c; stroke-width: 0.8"/>
" clip-path="url(#p1281d07d4f)" style="fill: none; stroke-dasharray: 3.2,2.4; stroke-dashoffset: 0; stroke: #8c8c8c; stroke-width: 0.8"/>
</g>
<g id="matplotlib.axis_3">
<g id="xtick_8">
<g id="line2d_24">
<g>
<use xlink:href="#m5c63abc35b" x="252.147734" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m9a5a171291" x="252.147734" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_20">
@@ -1553,7 +1553,7 @@ L 331.821041 30.116625
<g id="xtick_9">
<g id="line2d_25">
<g>
<use xlink:href="#m5c63abc35b" x="278.705503" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m9a5a171291" x="278.705503" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_21">
@@ -1567,7 +1567,7 @@ L 331.821041 30.116625
<g id="xtick_10">
<g id="line2d_26">
<g>
<use xlink:href="#m5c63abc35b" x="305.263272" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m9a5a171291" x="305.263272" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_22">
@@ -1581,7 +1581,7 @@ L 331.821041 30.116625
<g id="xtick_11">
<g id="line2d_27">
<g>
<use xlink:href="#m5c63abc35b" x="331.821041" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m9a5a171291" x="331.821041" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_23">
@@ -1595,7 +1595,7 @@ L 331.821041 30.116625
<g id="xtick_12">
<g id="line2d_28">
<g>
<use xlink:href="#m5c63abc35b" x="358.378811" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m9a5a171291" x="358.378811" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_24">
@@ -1609,7 +1609,7 @@ L 331.821041 30.116625
<g id="xtick_13">
<g id="line2d_29">
<g>
<use xlink:href="#m5c63abc35b" x="384.93658" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m9a5a171291" x="384.93658" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_25">
@@ -1623,7 +1623,7 @@ L 331.821041 30.116625
<g id="xtick_14">
<g id="line2d_30">
<g>
<use xlink:href="#m5c63abc35b" x="411.494349" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m9a5a171291" x="411.494349" y="143.436625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_26">
@@ -1658,42 +1658,42 @@ L 331.821041 30.116625
<g id="ytick_7">
<g id="line2d_31">
<g>
<use xlink:href="#md1c0198530" x="244.313192" y="139.604548" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mf4102281f5" x="244.313192" y="139.604548" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
</g>
<g id="ytick_8">
<g id="line2d_32">
<g>
<use xlink:href="#md1c0198530" x="244.313192" y="117.706963" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mf4102281f5" x="244.313192" y="117.706963" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
</g>
<g id="ytick_9">
<g id="line2d_33">
<g>
<use xlink:href="#md1c0198530" x="244.313192" y="95.809379" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mf4102281f5" x="244.313192" y="95.809379" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
</g>
<g id="ytick_10">
<g id="line2d_34">
<g>
<use xlink:href="#md1c0198530" x="244.313192" y="73.911794" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mf4102281f5" x="244.313192" y="73.911794" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
</g>
<g id="ytick_11">
<g id="line2d_35">
<g>
<use xlink:href="#md1c0198530" x="244.313192" y="52.01421" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mf4102281f5" x="244.313192" y="52.01421" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
</g>
<g id="ytick_12">
<g id="line2d_36">
<g>
<use xlink:href="#md1c0198530" x="244.313192" y="30.116625" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#mf4102281f5" x="244.313192" y="30.116625" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
</g>
@@ -1759,7 +1759,7 @@ L 400.871241 139.604548
L 403.527018 139.604548
L 406.182795 139.604548
L 408.838572 139.604548
" clip-path="url(#p476f65ca91)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
" clip-path="url(#p1281d07d4f)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
</g>
<g id="line2d_38">
<path d="M 252.147734 139.604548
@@ -1822,7 +1822,7 @@ L 400.871241 139.604548
L 403.527018 139.604548
L 406.182795 139.604548
L 408.838572 139.604548
" clip-path="url(#p476f65ca91)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
" clip-path="url(#p1281d07d4f)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
</g>
<g id="line2d_39">
<path d="M 252.147734 139.604548
@@ -1885,7 +1885,7 @@ L 400.871241 134.842048
L 403.527018 134.842048
L 406.182795 134.842048
L 408.838572 134.604749
" clip-path="url(#p476f65ca91)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
" clip-path="url(#p1281d07d4f)" style="fill: none; stroke: #c1432b; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
</g>
<g id="line2d_40">
<path d="M 252.147734 139.604548
@@ -1948,7 +1948,7 @@ L 400.871241 138.017048
L 403.527018 138.017048
L 406.182795 138.017048
L 408.838572 137.937948
" clip-path="url(#p476f65ca91)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/>
" clip-path="url(#p1281d07d4f)" style="fill: none; stroke: #c1432b; stroke-width: 1.8; stroke-linecap: round"/>
</g>
<g id="line2d_41">
<path d="M 252.147734 97.999137
@@ -2011,7 +2011,7 @@ L 400.871241 72.138165
L 403.527018 72.138165
L 406.182795 72.138165
L 408.838572 71.999455
" clip-path="url(#p476f65ca91)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
" clip-path="url(#p1281d07d4f)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
</g>
<g id="line2d_42">
<path d="M 252.147734 97.999137
@@ -2074,7 +2074,7 @@ L 400.871241 76.006056
L 403.527018 76.006056
L 406.182795 76.006056
L 408.838572 77.132767
" clip-path="url(#p476f65ca91)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
" clip-path="url(#p1281d07d4f)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
</g>
<g id="line2d_43">
<path d="M 252.147734 100.188896
@@ -2137,7 +2137,7 @@ L 400.871241 75.159118
L 403.527018 75.159118
L 406.182795 75.159118
L 408.838572 73.283505
" clip-path="url(#p476f65ca91)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
" clip-path="url(#p1281d07d4f)" style="fill: none; stroke: #2f7d4f; stroke-opacity: 0.35; stroke-width: 0.7; stroke-linecap: round"/>
</g>
<g id="line2d_44">
<path d="M 252.147734 98.729057
@@ -2200,7 +2200,7 @@ L 400.871241 74.434446
L 403.527018 74.434446
L 406.182795 74.434446
L 408.838572 74.138576
" clip-path="url(#p476f65ca91)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/>
" clip-path="url(#p1281d07d4f)" style="fill: none; stroke: #2f7d4f; stroke-width: 1.8; stroke-linecap: round"/>
</g>
<g id="patch_6">
<path d="M 244.313192 143.436625
@@ -2278,10 +2278,10 @@ z
</g>
</g>
<defs>
<clipPath id="p76f8b7246d">
<clipPath id="pdea13af0ac">
<rect x="40.600625" y="30.116625" width="172.359922" height="113.32"/>
</clipPath>
<clipPath id="p476f65ca91">
<clipPath id="p1281d07d4f">
<rect x="244.313192" y="30.116625" width="172.359922" height="113.32"/>
</clipPath>
</defs>

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 68 KiB

+248 -245
View File
@@ -6,7 +6,7 @@
<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-06-05T04:06:04.660001</dc:date>
<dc:date>2026-06-05T04:13:11.867043</dc:date>
<dc:format>image/svg+xml</dc:format>
<dc:creator>
<cc:Agent>
@@ -36,73 +36,78 @@ L 341.619197 10.239375
L 40.600625 10.239375
z
" style="fill: #ffffff"/>
</g>
<g id="line2d_1">
<path d="M 119.630861 162.469375
L 119.630861 10.239375
" clip-path="url(#p88ccaa88c9)" style="fill: none; stroke-dasharray: 3.2,2.4; stroke-dashoffset: 0; stroke: #8c8c8c; stroke-width: 0.8"/>
</g>
<g id="matplotlib.axis_1">
<g id="xtick_1">
<g id="line2d_1">
<g id="line2d_2">
<defs>
<path id="m978509b51e" d="M 0 0
<path id="m03fdf8d883" d="M 0 0
L 0 3.5
" style="stroke: #000000; stroke-width: 0.8"/>
</defs>
<g>
<use xlink:href="#m978509b51e" x="53.410471" y="162.469375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m03fdf8d883" x="53.410471" y="162.469375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
</g>
<g id="xtick_2">
<g id="line2d_2">
<g id="line2d_3">
<g>
<use xlink:href="#m978509b51e" x="96.833678" y="162.469375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m03fdf8d883" x="96.833678" y="162.469375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
</g>
<g id="xtick_3">
<g id="line2d_3">
<g id="line2d_4">
<g>
<use xlink:href="#m978509b51e" x="140.256885" y="162.469375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m03fdf8d883" x="140.256885" y="162.469375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
</g>
<g id="xtick_4">
<g id="line2d_4">
<g id="line2d_5">
<g>
<use xlink:href="#m978509b51e" x="183.680092" y="162.469375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m03fdf8d883" x="183.680092" y="162.469375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
</g>
<g id="xtick_5">
<g id="line2d_5">
<g id="line2d_6">
<g>
<use xlink:href="#m978509b51e" x="227.103298" y="162.469375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m03fdf8d883" x="227.103298" y="162.469375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
</g>
<g id="xtick_6">
<g id="line2d_6">
<g id="line2d_7">
<g>
<use xlink:href="#m978509b51e" x="270.526505" y="162.469375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m03fdf8d883" x="270.526505" y="162.469375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
</g>
<g id="xtick_7">
<g id="line2d_7">
<g id="line2d_8">
<g>
<use xlink:href="#m978509b51e" x="313.949712" y="162.469375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m03fdf8d883" x="313.949712" y="162.469375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
</g>
</g>
<g id="matplotlib.axis_2">
<g id="ytick_1">
<g id="line2d_8">
<g id="line2d_9">
<defs>
<path id="mcdeb8f8086" d="M 0 0
<path id="m93531412be" d="M 0 0
L -3.5 0
" style="stroke: #000000; stroke-width: 0.8"/>
</defs>
<g>
<use xlink:href="#mcdeb8f8086" x="40.600625" y="157.321501" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m93531412be" x="40.600625" y="157.321501" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_1">
@@ -145,9 +150,9 @@ z
</g>
</g>
<g id="ytick_2">
<g id="line2d_9">
<g id="line2d_10">
<g>
<use xlink:href="#mcdeb8f8086" x="40.600625" y="127.905075" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m93531412be" x="40.600625" y="127.905075" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_2">
@@ -186,9 +191,9 @@ z
</g>
</g>
<g id="ytick_3">
<g id="line2d_10">
<g id="line2d_11">
<g>
<use xlink:href="#mcdeb8f8086" x="40.600625" y="98.48865" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m93531412be" x="40.600625" y="98.48865" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_3">
@@ -222,9 +227,9 @@ z
</g>
</g>
<g id="ytick_4">
<g id="line2d_11">
<g id="line2d_12">
<g>
<use xlink:href="#mcdeb8f8086" x="40.600625" y="69.072225" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m93531412be" x="40.600625" y="69.072225" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_4">
@@ -269,9 +274,9 @@ z
</g>
</g>
<g id="ytick_5">
<g id="line2d_12">
<g id="line2d_13">
<g>
<use xlink:href="#mcdeb8f8086" x="40.600625" y="39.6558" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m93531412be" x="40.600625" y="39.6558" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_5">
@@ -325,9 +330,9 @@ z
</g>
</g>
<g id="ytick_6">
<g id="line2d_13">
<g id="line2d_14">
<g>
<use xlink:href="#mcdeb8f8086" x="40.600625" y="10.239375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m93531412be" x="40.600625" y="10.239375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_6">
@@ -523,7 +528,7 @@ z
</g>
</g>
</g>
<g id="line2d_14">
<g id="line2d_15">
<path d="M 53.410471 157.321501
L 57.752792 157.321501
L 62.095112 157.321501
@@ -584,9 +589,9 @@ L 296.580429 102.588139
L 300.92275 102.588139
L 305.265071 102.588139
L 309.607392 104.653559
" clip-path="url(#p88e679d426)" style="fill: none; stroke: #7a7a7a; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
" clip-path="url(#p88ccaa88c9)" style="fill: none; stroke: #7a7a7a; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
</g>
<g id="line2d_15">
<g id="line2d_16">
<path d="M 53.410471 157.321501
L 57.752792 157.321501
L 62.095112 157.321501
@@ -647,9 +652,9 @@ L 296.580429 104.240394
L 300.92275 104.240394
L 305.265071 104.240394
L 309.607392 103.303693
" clip-path="url(#p88e679d426)" style="fill: none; stroke: #7a7a7a; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
" clip-path="url(#p88ccaa88c9)" style="fill: none; stroke: #7a7a7a; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
</g>
<g id="line2d_16">
<g id="line2d_17">
<path d="M 53.410471 157.321501
L 57.752792 157.321501
L 62.095112 157.321501
@@ -710,9 +715,9 @@ L 296.580429 86.923154
L 300.92275 82.373627
L 305.265071 89.846475
L 309.607392 82.571529
" clip-path="url(#p88e679d426)" style="fill: none; stroke: #7a7a7a; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
" clip-path="url(#p88ccaa88c9)" style="fill: none; stroke: #7a7a7a; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
</g>
<g id="line2d_17">
<g id="line2d_18">
<path d="M 53.410471 157.321501
L 57.752792 157.321501
L 62.095112 157.321501
@@ -773,70 +778,7 @@ L 296.580429 97.917229
L 300.92275 96.40072
L 305.265071 98.891669
L 309.607392 96.842927
" clip-path="url(#p88e679d426)" style="fill: none; stroke: #7a7a7a; stroke-width: 2; stroke-linecap: round"/>
</g>
<g id="line2d_18">
<path d="M 53.410471 157.321501
L 57.752792 157.321501
L 62.095112 157.321501
L 66.437433 157.321501
L 70.779754 157.321501
L 75.122074 157.321501
L 79.464395 157.321501
L 83.806716 157.321501
L 88.149037 157.321501
L 92.491357 157.321501
L 96.833678 157.321501
L 101.175999 157.321501
L 105.518319 157.321501
L 109.86064 157.321501
L 114.202961 157.321501
L 118.545281 157.321501
L 122.887602 157.321501
L 127.229923 157.321501
L 131.572243 157.321501
L 135.914564 157.321501
L 140.256885 157.321501
L 144.599205 157.321501
L 148.941526 157.321501
L 153.283847 157.321501
L 157.626168 157.321501
L 161.968488 157.321501
L 166.310809 157.321501
L 170.65313 157.321501
L 174.99545 157.321501
L 179.337771 157.321501
L 183.680092 157.321501
L 188.022412 157.321501
L 192.364733 157.321501
L 196.707054 157.321501
L 201.049374 157.321501
L 205.391695 157.321501
L 209.734016 157.321501
L 214.076336 157.321501
L 218.418657 157.321501
L 222.760978 157.321501
L 227.103298 157.321501
L 231.445619 157.321501
L 235.78794 157.321501
L 240.130261 157.321501
L 244.472581 157.321501
L 248.814902 157.321501
L 253.157223 157.321501
L 257.499543 157.321501
L 261.841864 157.321501
L 266.184185 157.321501
L 270.526505 157.321501
L 274.868826 157.321501
L 279.211147 157.321501
L 283.553467 157.321501
L 287.895788 157.321501
L 292.238109 157.321501
L 296.580429 157.321501
L 300.92275 157.321501
L 305.265071 157.321501
L 309.607392 157.321501
" clip-path="url(#p88e679d426)" style="fill: none; stroke: #7d2f6f; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
" clip-path="url(#p88ccaa88c9)" style="fill: none; stroke: #7a7a7a; stroke-width: 2; stroke-linecap: round"/>
</g>
<g id="line2d_19">
<path d="M 53.410471 157.321501
@@ -899,7 +841,7 @@ L 296.580429 157.321501
L 300.92275 157.321501
L 305.265071 157.321501
L 309.607392 157.321501
" clip-path="url(#p88e679d426)" style="fill: none; stroke: #7d2f6f; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
" clip-path="url(#p88ccaa88c9)" style="fill: none; stroke: #7d2f6f; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
</g>
<g id="line2d_20">
<path d="M 53.410471 157.321501
@@ -932,6 +874,69 @@ L 166.310809 157.321501
L 170.65313 157.321501
L 174.99545 157.321501
L 179.337771 157.321501
L 183.680092 157.321501
L 188.022412 157.321501
L 192.364733 157.321501
L 196.707054 157.321501
L 201.049374 157.321501
L 205.391695 157.321501
L 209.734016 157.321501
L 214.076336 157.321501
L 218.418657 157.321501
L 222.760978 157.321501
L 227.103298 157.321501
L 231.445619 157.321501
L 235.78794 157.321501
L 240.130261 157.321501
L 244.472581 157.321501
L 248.814902 157.321501
L 253.157223 157.321501
L 257.499543 157.321501
L 261.841864 157.321501
L 266.184185 157.321501
L 270.526505 157.321501
L 274.868826 157.321501
L 279.211147 157.321501
L 283.553467 157.321501
L 287.895788 157.321501
L 292.238109 157.321501
L 296.580429 157.321501
L 300.92275 157.321501
L 305.265071 157.321501
L 309.607392 157.321501
" clip-path="url(#p88ccaa88c9)" style="fill: none; stroke: #7d2f6f; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
</g>
<g id="line2d_21">
<path d="M 53.410471 157.321501
L 57.752792 157.321501
L 62.095112 157.321501
L 66.437433 157.321501
L 70.779754 157.321501
L 75.122074 157.321501
L 79.464395 157.321501
L 83.806716 157.321501
L 88.149037 157.321501
L 92.491357 157.321501
L 96.833678 157.321501
L 101.175999 157.321501
L 105.518319 157.321501
L 109.86064 157.321501
L 114.202961 157.321501
L 118.545281 157.321501
L 122.887602 157.321501
L 127.229923 157.321501
L 131.572243 157.321501
L 135.914564 157.321501
L 140.256885 157.321501
L 144.599205 157.321501
L 148.941526 157.321501
L 153.283847 157.321501
L 157.626168 157.321501
L 161.968488 157.321501
L 166.310809 157.321501
L 170.65313 157.321501
L 174.99545 157.321501
L 179.337771 157.321501
L 183.680092 155.850679
L 188.022412 155.850679
L 192.364733 155.850679
@@ -962,9 +967,9 @@ L 296.580429 150.923731
L 300.92275 150.923731
L 305.265071 150.923731
L 309.607392 150.604952
" clip-path="url(#p88e679d426)" style="fill: none; stroke: #7d2f6f; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
" clip-path="url(#p88ccaa88c9)" style="fill: none; stroke: #7d2f6f; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
</g>
<g id="line2d_21">
<g id="line2d_22">
<path d="M 53.410471 157.321501
L 57.752792 157.321501
L 62.095112 157.321501
@@ -1025,7 +1030,7 @@ L 296.580429 155.188911
L 300.92275 155.188911
L 305.265071 155.188911
L 309.607392 155.082651
" clip-path="url(#p88e679d426)" style="fill: none; stroke: #7d2f6f; stroke-width: 2; stroke-linecap: round"/>
" clip-path="url(#p88ccaa88c9)" style="fill: none; stroke: #7d2f6f; stroke-width: 2; stroke-linecap: round"/>
</g>
<g id="patch_3">
<path d="M 40.600625 162.469375
@@ -1037,44 +1042,86 @@ L 40.600625 10.239375
L 341.619197 162.469375
" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"/>
</g>
<g id="line2d_22">
<path d="M 98.281118 151.586076
" clip-path="url(#p88e679d426)" style="fill: none; stroke: #7a7a7a; stroke-width: 1.5; stroke-linecap: square"/>
<defs>
<path id="mc5c805cfcc" d="M 0 2
C 0.530406 2 1.03916 1.789267 1.414214 1.414214
C 1.789267 1.03916 2 0.530406 2 0
C 2 -0.530406 1.789267 -1.03916 1.414214 -1.414214
C 1.03916 -1.789267 0.530406 -2 0 -2
C -0.530406 -2 -1.03916 -1.789267 -1.414214 -1.414214
C -1.789267 -1.03916 -2 -0.530406 -2 0
C -2 0.530406 -1.789267 1.03916 -1.414214 1.414214
C -1.03916 1.789267 -0.530406 2 0 2
<g id="text_8">
<!-- first hack -->
<g style="fill: #666666" transform="translate(121.630861 17.558281) scale(0.07 -0.07)">
<defs>
<path id="DejaVuSans-66" d="M 2375 4863
L 2375 4384
L 1825 4384
Q 1516 4384 1395 4259
Q 1275 4134 1275 3809
L 1275 3500
L 2222 3500
L 2222 3053
L 1275 3053
L 1275 0
L 697 0
L 697 3053
L 147 3053
L 147 3500
L 697 3500
L 697 3744
Q 697 4328 969 4595
Q 1241 4863 1831 4863
L 2375 4863
z
" style="stroke: #7a7a7a"/>
</defs>
<g clip-path="url(#p88e679d426)">
<use xlink:href="#mc5c805cfcc" x="98.281118" y="151.586076" style="fill: #7a7a7a; stroke: #7a7a7a"/>
</g>
</g>
<g id="line2d_23">
<path d="M 183.680092 156.831227
" clip-path="url(#p88e679d426)" style="fill: none; stroke: #7d2f6f; stroke-width: 1.5; stroke-linecap: square"/>
<defs>
<path id="mf12cce5be0" d="M 0 2
C 0.530406 2 1.03916 1.789267 1.414214 1.414214
C 1.789267 1.03916 2 0.530406 2 0
C 2 -0.530406 1.789267 -1.03916 1.414214 -1.414214
C 1.03916 -1.789267 0.530406 -2 0 -2
C -0.530406 -2 -1.03916 -1.789267 -1.414214 -1.414214
C -1.789267 -1.03916 -2 -0.530406 -2 0
C -2 0.530406 -1.789267 1.03916 -1.414214 1.414214
C -1.03916 1.789267 -0.530406 2 0 2
" transform="scale(0.015625)"/>
<path id="DejaVuSans-69" d="M 603 3500
L 1178 3500
L 1178 0
L 603 0
L 603 3500
z
" style="stroke: #7d2f6f"/>
</defs>
<g clip-path="url(#p88e679d426)">
<use xlink:href="#mf12cce5be0" x="183.680092" y="156.831227" style="fill: #7d2f6f; stroke: #7d2f6f"/>
M 603 4863
L 1178 4863
L 1178 4134
L 603 4134
L 603 4863
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-73" d="M 2834 3397
L 2834 2853
Q 2591 2978 2328 3040
Q 2066 3103 1784 3103
Q 1356 3103 1142 2972
Q 928 2841 928 2578
Q 928 2378 1081 2264
Q 1234 2150 1697 2047
L 1894 2003
Q 2506 1872 2764 1633
Q 3022 1394 3022 966
Q 3022 478 2636 193
Q 2250 -91 1575 -91
Q 1294 -91 989 -36
Q 684 19 347 128
L 347 722
Q 666 556 975 473
Q 1284 391 1588 391
Q 1994 391 2212 530
Q 2431 669 2431 922
Q 2431 1156 2273 1281
Q 2116 1406 1581 1522
L 1381 1569
Q 847 1681 609 1914
Q 372 2147 372 2553
Q 372 3047 722 3315
Q 1072 3584 1716 3584
Q 2034 3584 2315 3537
Q 2597 3491 2834 3397
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-66"/>
<use xlink:href="#DejaVuSans-69" transform="translate(35.205078 0)"/>
<use xlink:href="#DejaVuSans-72" transform="translate(62.988281 0)"/>
<use xlink:href="#DejaVuSans-73" transform="translate(104.101562 0)"/>
<use xlink:href="#DejaVuSans-74" transform="translate(156.201172 0)"/>
<use xlink:href="#DejaVuSans-20" transform="translate(195.410156 0)"/>
<use xlink:href="#DejaVuSans-68" transform="translate(227.197266 0)"/>
<use xlink:href="#DejaVuSans-61" transform="translate(290.576172 0)"/>
<use xlink:href="#DejaVuSans-63" transform="translate(351.855469 0)"/>
<use xlink:href="#DejaVuSans-6b" transform="translate(406.835938 0)"/>
</g>
</g>
<g id="patch_5">
@@ -1082,7 +1129,7 @@ z
Q 314.318133 155.082651 311.610498 155.082651
" style="fill: none; stroke: #7d2f6f; stroke-width: 0.5; stroke-linecap: round"/>
</g>
<g id="text_8">
<g id="text_9">
<!-- route $\approx 0$ -->
<g style="fill: #7d2f6f" transform="translate(319.022628 157.290151) scale(0.08 -0.08)">
<defs>
@@ -1186,7 +1233,7 @@ z
Q 314.31554 96.842927 311.609395 96.842927
" style="fill: none; stroke: #7a7a7a; stroke-width: 0.5; stroke-linecap: round"/>
</g>
<g id="text_9">
<g id="text_10">
<!-- vanilla -->
<g style="fill: #7a7a7a" transform="translate(319.022628 99.050427) scale(0.08 -0.08)">
<defs>
@@ -1218,19 +1265,6 @@ Q 1925 3584 2291 3584
Q 2894 3584 3203 3211
Q 3513 2838 3513 2113
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-69" d="M 603 3500
L 1178 3500
L 1178 0
L 603 0
L 603 3500
z
M 603 4863
L 1178 4863
L 1178 4134
L 603 4134
L 603 4863
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-6c" d="M 603 4863
L 1178 4863
@@ -1261,12 +1295,12 @@ z
</g>
<g id="matplotlib.axis_3">
<g id="xtick_8">
<g id="line2d_24">
<g id="line2d_23">
<g>
<use xlink:href="#m978509b51e" x="53.410471" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m03fdf8d883" x="53.410471" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_10">
<g id="text_11">
<!-- 0 -->
<g transform="translate(50.865471 344.958125) scale(0.08 -0.08)">
<use xlink:href="#DejaVuSans-30"/>
@@ -1274,12 +1308,12 @@ z
</g>
</g>
<g id="xtick_9">
<g id="line2d_25">
<g id="line2d_24">
<g>
<use xlink:href="#m978509b51e" x="96.833678" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m03fdf8d883" x="96.833678" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_11">
<g id="text_12">
<!-- 10 -->
<g transform="translate(91.743678 344.958125) scale(0.08 -0.08)">
<use xlink:href="#DejaVuSans-31"/>
@@ -1288,12 +1322,12 @@ z
</g>
</g>
<g id="xtick_10">
<g id="line2d_26">
<g id="line2d_25">
<g>
<use xlink:href="#m978509b51e" x="140.256885" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m03fdf8d883" x="140.256885" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_12">
<g id="text_13">
<!-- 20 -->
<g transform="translate(135.166885 344.958125) scale(0.08 -0.08)">
<use xlink:href="#DejaVuSans-32"/>
@@ -1302,12 +1336,12 @@ z
</g>
</g>
<g id="xtick_11">
<g id="line2d_27">
<g id="line2d_26">
<g>
<use xlink:href="#m978509b51e" x="183.680092" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m03fdf8d883" x="183.680092" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_13">
<g id="text_14">
<!-- 30 -->
<g transform="translate(178.590092 344.958125) scale(0.08 -0.08)">
<defs>
@@ -1350,12 +1384,12 @@ z
</g>
</g>
<g id="xtick_12">
<g id="line2d_28">
<g id="line2d_27">
<g>
<use xlink:href="#m978509b51e" x="227.103298" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m03fdf8d883" x="227.103298" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_14">
<g id="text_15">
<!-- 40 -->
<g transform="translate(222.013298 344.958125) scale(0.08 -0.08)">
<use xlink:href="#DejaVuSans-34"/>
@@ -1364,12 +1398,12 @@ z
</g>
</g>
<g id="xtick_13">
<g id="line2d_29">
<g id="line2d_28">
<g>
<use xlink:href="#m978509b51e" x="270.526505" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m03fdf8d883" x="270.526505" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_15">
<g id="text_16">
<!-- 50 -->
<g transform="translate(265.436505 344.958125) scale(0.08 -0.08)">
<defs>
@@ -1405,12 +1439,12 @@ z
</g>
</g>
<g id="xtick_14">
<g id="line2d_30">
<g id="line2d_29">
<g>
<use xlink:href="#m978509b51e" x="313.949712" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m03fdf8d883" x="313.949712" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_16">
<g id="text_17">
<!-- 60 -->
<g transform="translate(308.859712 344.958125) scale(0.08 -0.08)">
<use xlink:href="#DejaVuSans-36"/>
@@ -1418,7 +1452,7 @@ z
</g>
</g>
</g>
<g id="text_17">
<g id="text_18">
<!-- optimizer step -->
<g transform="translate(155.106786 358.220312) scale(0.1 -0.1)">
<defs>
@@ -1490,37 +1524,6 @@ L 2438 3041
L 353 3041
L 353 3500
z
" transform="scale(0.015625)"/>
<path id="DejaVuSans-73" d="M 2834 3397
L 2834 2853
Q 2591 2978 2328 3040
Q 2066 3103 1784 3103
Q 1356 3103 1142 2972
Q 928 2841 928 2578
Q 928 2378 1081 2264
Q 1234 2150 1697 2047
L 1894 2003
Q 2506 1872 2764 1633
Q 3022 1394 3022 966
Q 3022 478 2636 193
Q 2250 -91 1575 -91
Q 1294 -91 989 -36
Q 684 19 347 128
L 347 722
Q 666 556 975 473
Q 1284 391 1588 391
Q 1994 391 2212 530
Q 2431 669 2431 922
Q 2431 1156 2273 1281
Q 2116 1406 1581 1522
L 1381 1569
Q 847 1681 609 1914
Q 372 2147 372 2553
Q 372 3047 722 3315
Q 1072 3584 1716 3584
Q 2034 3584 2315 3537
Q 2597 3491 2834 3397
z
" transform="scale(0.015625)"/>
</defs>
<use xlink:href="#DejaVuSans-6f"/>
@@ -1542,12 +1545,12 @@ z
</g>
<g id="matplotlib.axis_4">
<g id="ytick_7">
<g id="line2d_31">
<g id="line2d_30">
<g>
<use xlink:href="#mcdeb8f8086" x="40.600625" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m93531412be" x="40.600625" y="331.879375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_18">
<g id="text_19">
<!-- 0.0 -->
<g transform="translate(20.878125 334.91875) scale(0.08 -0.08)">
<use xlink:href="#DejaVuSans-30"/>
@@ -1557,12 +1560,12 @@ z
</g>
</g>
<g id="ytick_8">
<g id="line2d_32">
<g id="line2d_31">
<g>
<use xlink:href="#mcdeb8f8086" x="40.600625" y="301.433375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m93531412be" x="40.600625" y="301.433375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_19">
<g id="text_20">
<!-- 0.2 -->
<g transform="translate(20.878125 304.47275) scale(0.08 -0.08)">
<use xlink:href="#DejaVuSans-30"/>
@@ -1572,12 +1575,12 @@ z
</g>
</g>
<g id="ytick_9">
<g id="line2d_33">
<g id="line2d_32">
<g>
<use xlink:href="#mcdeb8f8086" x="40.600625" y="270.987375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m93531412be" x="40.600625" y="270.987375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_20">
<g id="text_21">
<!-- 0.4 -->
<g transform="translate(20.878125 274.02675) scale(0.08 -0.08)">
<use xlink:href="#DejaVuSans-30"/>
@@ -1587,12 +1590,12 @@ z
</g>
</g>
<g id="ytick_10">
<g id="line2d_34">
<g id="line2d_33">
<g>
<use xlink:href="#mcdeb8f8086" x="40.600625" y="240.541375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m93531412be" x="40.600625" y="240.541375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_21">
<g id="text_22">
<!-- 0.6 -->
<g transform="translate(20.878125 243.58075) scale(0.08 -0.08)">
<use xlink:href="#DejaVuSans-30"/>
@@ -1602,12 +1605,12 @@ z
</g>
</g>
<g id="ytick_11">
<g id="line2d_35">
<g id="line2d_34">
<g>
<use xlink:href="#mcdeb8f8086" x="40.600625" y="210.095375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m93531412be" x="40.600625" y="210.095375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_22">
<g id="text_23">
<!-- 0.8 -->
<g transform="translate(20.878125 213.13475) scale(0.08 -0.08)">
<use xlink:href="#DejaVuSans-30"/>
@@ -1617,12 +1620,12 @@ z
</g>
</g>
<g id="ytick_12">
<g id="line2d_36">
<g id="line2d_35">
<g>
<use xlink:href="#mcdeb8f8086" x="40.600625" y="179.649375" style="stroke: #000000; stroke-width: 0.8"/>
<use xlink:href="#m93531412be" x="40.600625" y="179.649375" style="stroke: #000000; stroke-width: 0.8"/>
</g>
</g>
<g id="text_23">
<g id="text_24">
<!-- 1.0 -->
<g transform="translate(20.878125 182.68875) scale(0.08 -0.08)">
<use xlink:href="#DejaVuSans-31"/>
@@ -1631,7 +1634,7 @@ z
</g>
</g>
</g>
<g id="text_24">
<g id="text_25">
<!-- solve rate -->
<g transform="translate(14.798438 280.59875) rotate(-90) scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-73"/>
@@ -1647,7 +1650,7 @@ z
</g>
</g>
</g>
<g id="line2d_37">
<g id="line2d_36">
<path d="M 53.410471 277.076575
L 57.752792 277.076575
L 62.095112 277.076575
@@ -1708,9 +1711,9 @@ L 296.580429 263.423551
L 300.92275 263.423551
L 305.265071 263.423551
L 309.607392 263.915093
" clip-path="url(#p52a44b07a9)" style="fill: none; stroke: #7a7a7a; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
" clip-path="url(#p5acac56b64)" style="fill: none; stroke: #7a7a7a; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
</g>
<g id="line2d_38">
<g id="line2d_37">
<path d="M 53.410471 274.031975
L 57.752792 274.031975
L 62.095112 274.031975
@@ -1771,9 +1774,9 @@ L 296.580429 259.429738
L 300.92275 259.429738
L 305.265071 259.429738
L 309.607392 260.745117
" clip-path="url(#p52a44b07a9)" style="fill: none; stroke: #7a7a7a; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
" clip-path="url(#p5acac56b64)" style="fill: none; stroke: #7a7a7a; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
</g>
<g id="line2d_39">
<g id="line2d_38">
<path d="M 53.410471 272.074732
L 57.752792 272.074732
L 62.095112 277.511518
@@ -1834,9 +1837,9 @@ L 296.580429 281.580483
L 300.92275 289.285471
L 305.265071 294.422129
L 309.607392 305.095616
" clip-path="url(#p52a44b07a9)" style="fill: none; stroke: #7a7a7a; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
" clip-path="url(#p5acac56b64)" style="fill: none; stroke: #7a7a7a; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
</g>
<g id="line2d_40">
<g id="line2d_39">
<path d="M 53.410471 274.394427
L 57.752792 274.394427
L 62.095112 276.206689
@@ -1897,9 +1900,9 @@ L 296.580429 268.144591
L 300.92275 270.71292
L 305.265071 272.42514
L 309.607392 276.585275
" clip-path="url(#p52a44b07a9)" style="fill: none; stroke: #7a7a7a; stroke-width: 2; stroke-linecap: round"/>
" clip-path="url(#p5acac56b64)" style="fill: none; stroke: #7a7a7a; stroke-width: 2; stroke-linecap: round"/>
</g>
<g id="line2d_41">
<g id="line2d_40">
<path d="M 53.410471 274.031975
L 57.752792 274.031975
L 62.095112 274.031975
@@ -1960,9 +1963,9 @@ L 296.580429 238.075353
L 300.92275 238.075353
L 305.265071 238.075353
L 309.607392 237.882494
" clip-path="url(#p52a44b07a9)" style="fill: none; stroke: #7d2f6f; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
" clip-path="url(#p5acac56b64)" style="fill: none; stroke: #7d2f6f; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
</g>
<g id="line2d_42">
<g id="line2d_41">
<path d="M 53.410471 274.031975
L 57.752792 274.031975
L 62.095112 274.031975
@@ -2023,9 +2026,9 @@ L 296.580429 243.453198
L 300.92275 243.453198
L 305.265071 243.453198
L 309.607392 245.019757
" clip-path="url(#p52a44b07a9)" style="fill: none; stroke: #7d2f6f; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
" clip-path="url(#p5acac56b64)" style="fill: none; stroke: #7d2f6f; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
</g>
<g id="line2d_43">
<g id="line2d_42">
<path d="M 53.410471 277.076575
L 57.752792 277.076575
L 62.095112 277.076575
@@ -2086,9 +2089,9 @@ L 296.580429 242.275632
L 300.92275 242.275632
L 305.265071 242.275632
L 309.607392 239.667813
" clip-path="url(#p52a44b07a9)" style="fill: none; stroke: #7d2f6f; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
" clip-path="url(#p5acac56b64)" style="fill: none; stroke: #7d2f6f; stroke-opacity: 0.25; stroke-width: 0.6; stroke-linecap: round"/>
</g>
<g id="line2d_44">
<g id="line2d_43">
<path d="M 53.410471 275.046842
L 57.752792 275.046842
L 62.095112 275.046842
@@ -2149,7 +2152,7 @@ L 296.580429 241.268061
L 300.92275 241.268061
L 305.265071 241.268061
L 309.607392 240.856688
" clip-path="url(#p52a44b07a9)" style="fill: none; stroke: #7d2f6f; stroke-width: 2; stroke-linecap: round"/>
" clip-path="url(#p5acac56b64)" style="fill: none; stroke: #7d2f6f; stroke-width: 2; stroke-linecap: round"/>
</g>
<g id="patch_8">
<path d="M 40.600625 331.879375
@@ -2164,10 +2167,10 @@ L 341.619197 331.879375
</g>
</g>
<defs>
<clipPath id="p88e679d426">
<clipPath id="p88ccaa88c9">
<rect x="40.600625" y="10.239375" width="301.018572" height="152.23"/>
</clipPath>
<clipPath id="p52a44b07a9">
<clipPath id="p5acac56b64">
<rect x="40.600625" y="179.649375" width="301.018572" height="152.23"/>
</clipPath>
</defs>

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

+20 -9
View File
@@ -21,6 +21,7 @@ Usage:
from __future__ import annotations
import argparse
import csv
import json
from collections import defaultdict
from pathlib import Path
@@ -66,7 +67,7 @@ def _mode_stats(by_arm, arm, modes, field):
return np.array(means), np.array(stds)
def _panel(ax, by_arm, modes, arms, field, title, xlabel):
def _panel(ax, by_arm, modes, arms, field, xlabel):
"""Cleveland dot plot: y = mode, x = rate. One dot per arm with a thin connector
per mode, so the arm-to-arm change reads as a line segment (vanilla -> route).
xerr = std across seeds (drawn only when >1 seed). Tufte: faint x-grid only, no
@@ -97,9 +98,8 @@ def _panel(ax, by_arm, modes, arms, field, title, xlabel):
ax.set_yticklabels([f"{m}\n{'IN' if m == 'run_tests' else 'held-out'}" for m in modes], fontsize=8)
ax.set_xlim(-0.04, 1.08)
ax.set_ylim(y.min() - 0.5, y.max() + 0.5)
ax.set_xlabel(xlabel)
ax.set_title(title, fontsize=10)
ax.spines[["top", "right", "left"]].set_visible(False)
ax.set_xlabel(xlabel, fontsize=9) # carries the metric AND the better-direction;
ax.spines[["top", "right", "left"]].set_visible(False) # no title (would just restate it)
ax.tick_params(length=0)
ax.grid(axis="x", lw=0.3, alpha=0.3)
@@ -125,10 +125,8 @@ def main() -> None:
modes = [m for m in MODE_ORDER if any(m in r["by_mode"] for r in records)]
fig, (a1, a2) = plt.subplots(1, 2, figsize=(9.5, 0.7 + 0.7 * len(modes)), sharey=True)
_panel(a1, by_arm, modes, arms, "deploy_hack",
"DEPLOY hack rate (lower = better)", "deploy hack rate")
_panel(a2, by_arm, modes, arms, "deploy_solve",
"DEPLOY solve rate (higher = better)", "deploy solve rate")
_panel(a1, by_arm, modes, arms, "deploy_hack", r"DEPLOY hack rate ($\downarrow$ lower = better)")
_panel(a2, by_arm, modes, arms, "deploy_solve", r"DEPLOY solve rate ($\uparrow$ higher = better)")
a1.legend(fontsize=8, frameon=False, loc="lower right")
if args.title:
n_seed = {r.get("seed") for r in records}
@@ -136,7 +134,20 @@ def main() -> None:
f"quarantine deleted = shipped model", fontsize=11)
fig.tight_layout()
save_fig(fig, args.out)
logger.info(f"wrote {args.out} ({len(arms)} arms x {len(modes)} modes)")
# CSV reproducibility source (mirrors the dynamics plots' dump): per (mode, arm)
# the deploy hack/solve mean +/- std-across-seeds, exactly what the dots encode.
csv_path = args.out.with_suffix(".csv")
with csv_path.open("w", newline="") as f:
w = csv.writer(f)
w.writerow(["mode", "in_dist", "arm", "n_seed",
"deploy_hack_mean", "deploy_hack_std", "deploy_solve_mean", "deploy_solve_std"])
for arm in arms:
hk_m, hk_s = _mode_stats(by_arm, arm, modes, "deploy_hack")
sv_m, sv_s = _mode_stats(by_arm, arm, modes, "deploy_solve")
for j, m in enumerate(modes):
w.writerow([m, m == "run_tests", ARM[arm][0], len(by_arm[arm]),
f"{hk_m[j]:.6f}", f"{hk_s[j]:.6f}", f"{sv_m[j]:.6f}", f"{sv_s[j]:.6f}"])
logger.info(f"wrote {args.out} and {csv_path.name} ({len(arms)} arms x {len(modes)} modes)")
if __name__ == "__main__":
+9 -4
View File
@@ -355,6 +355,7 @@ def _overlay_panel(ax, by_arm, arms, key, *, label, with_onset, label_arms, ylim
endpoint (de-collided in y). An arm whose mean series sits at zero gets a
"$\\approx 0$" tag so a pinned-at-zero line reads as a finding, not a missing line."""
ends = [] # (y_endpoint, x_endpoint, arm, color, is_zero) for direct labels
onset_steps = [] # mean-onset across arms -> ONE labeled vertical line (see below)
for arm in arms:
rs = [r for r in by_arm[arm] if key in r]
if not rs:
@@ -370,11 +371,15 @@ def _overlay_panel(ax, by_arm, arms, key, *, label, with_onset, label_arms, ylim
xm = rs[0]["steps"][:L]
ax.plot(xm, ym, color=color, lw=2.0, solid_capstyle="round")
if with_onset:
onsets = [s for r in rs if (s := _onset(r["steps"], r["hack_s"])) is not None]
if onsets:
s0 = float(np.mean(onsets))
ax.plot(s0, np.interp(s0, xm, ym), marker="o", ms=4, color=color, zorder=3)
onset_steps += [s for r in rs if (s := _onset(r["steps"], r["hack_s"])) is not None]
ends.append((float(ym[-1]), float(xm[-1]), arm, color, float(np.nanmax(ym)) < 0.02))
# First-hack as a labeled vertical line (matches the small-multiples), not a dot:
# a dashed rule reads as "emergence starts here" across both arms in one mark.
if with_onset and onset_steps:
s0 = float(np.mean(onset_steps))
ax.axvline(s0, color="0.55", lw=0.8, ls=(0, (4, 3)), zorder=0)
ax.annotate("first hack", (s0, ylim[1]), color="0.4", fontsize=7,
xytext=(2, -2), textcoords="offset points", va="top")
ax.set_ylim(*ylim)
ax.set_ylabel(label)
ax.spines[["top", "right"]].set_visible(False)