jarvisplot 2.1.9__tar.gz → 2.1.10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. jarvisplot-2.1.10/Example/forest/README.md +69 -0
  2. jarvisplot-2.1.10/Example/forest/box.yaml +25 -0
  3. jarvisplot-2.1.10/Example/forest/data/box.csv +3 -0
  4. jarvisplot-2.1.10/Example/forest/data/forest-points.csv +242 -0
  5. jarvisplot-2.1.10/Example/forest/data/forest-rows.csv +98 -0
  6. jarvisplot-2.1.10/Example/forest/data/interval.csv +3 -0
  7. jarvisplot-2.1.10/Example/forest/data/points.csv +5 -0
  8. jarvisplot-2.1.10/Example/forest/data/summary-intervals.csv +7 -0
  9. jarvisplot-2.1.10/Example/forest/data/summary-labels.csv +3 -0
  10. jarvisplot-2.1.10/Example/forest/data/summary-points.csv +21 -0
  11. jarvisplot-2.1.10/Example/forest/data/summary-rows.csv +3 -0
  12. jarvisplot-2.1.10/Example/forest/interval.yaml +21 -0
  13. jarvisplot-2.1.10/Example/forest/intervals-only.yaml +52 -0
  14. jarvisplot-2.1.10/Example/forest/multi-interval.yaml +69 -0
  15. jarvisplot-2.1.10/Example/forest/real-demo-debug.yaml +54 -0
  16. jarvisplot-2.1.10/Example/forest/real-demo.yaml +55 -0
  17. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/JarvisPLOT.egg-info/PKG-INFO +7 -4
  18. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/JarvisPLOT.egg-info/SOURCES.txt +84 -1
  19. jarvisplot-2.1.10/MANIFEST.in +4 -0
  20. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/PKG-INFO +7 -4
  21. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/README.md +6 -3
  22. jarvisplot-2.1.10/VERSION +1 -0
  23. jarvisplot-2.1.10/docs/README.md +45 -0
  24. jarvisplot-2.1.10/docs/archive/JARVIS_PLOT_CODE_REVIEW_2026-03-04.md +130 -0
  25. jarvisplot-2.1.10/docs/archive/README.md +15 -0
  26. jarvisplot-2.1.10/docs/context/CODEX_JARVIS_PLOT_STYLE.md +154 -0
  27. jarvisplot-2.1.10/docs/context/CODE_MAP_JARVIS_PLOT.md +216 -0
  28. jarvisplot-2.1.10/docs/context/JARVIS_PLOT_CONTEXT.md +234 -0
  29. jarvisplot-2.1.10/docs/context/JARVIS_PLOT_FRAMEWORK_LOGIC.md +200 -0
  30. jarvisplot-2.1.10/docs/context/README.md +49 -0
  31. jarvisplot-2.1.10/docs/design/ARCHITECTURE_OVERVIEW.md +127 -0
  32. jarvisplot-2.1.10/docs/design/DATAFLOW_ARCHITECTURE.md +183 -0
  33. jarvisplot-2.1.10/docs/design/LAYOUT_ENGINE_DESIGN.md +59 -0
  34. jarvisplot-2.1.10/docs/design/PROFILE_SYSTEM_DESIGN.md +80 -0
  35. jarvisplot-2.1.10/docs/design/README.md +22 -0
  36. jarvisplot-2.1.10/docs/design/STYLE_SYSTEM_DESIGN.md +55 -0
  37. jarvisplot-2.1.10/docs/design/YAML_DESIGN.md +2230 -0
  38. jarvisplot-2.1.10/docs/dev/AGENT_CLI_CLOSURE_AUDIT_2026-08-07.md +206 -0
  39. jarvisplot-2.1.10/docs/dev/AGENT_CLI_FULL_REVIEW_2026-08-06.md +518 -0
  40. jarvisplot-2.1.10/docs/dev/AGENT_OUTPUT_YAML_DESIGN.md +408 -0
  41. jarvisplot-2.1.10/docs/dev/CONTRIBUTION_GUIDE.md +160 -0
  42. jarvisplot-2.1.10/docs/dev/DEVELOPER_RULES.md +130 -0
  43. jarvisplot-2.1.10/docs/dev/MAN_CLI.md +472 -0
  44. jarvisplot-2.1.10/docs/dev/MEMORY_OPTIMIZATION_GUIDE.md +132 -0
  45. jarvisplot-2.1.10/docs/dev/MEMTRACE_SYSTEM.md +159 -0
  46. jarvisplot-2.1.10/docs/dev/README.md +21 -0
  47. jarvisplot-2.1.10/docs/dev/YAML_HUMAN_AI_OCCAM_REVIEW.md +278 -0
  48. jarvisplot-2.1.10/docs/release/README.md +29 -0
  49. jarvisplot-2.1.10/docs/release/RELEASE_PLAYBOOK.md +27 -0
  50. jarvisplot-2.1.10/docs/release/releases/README.md +21 -0
  51. jarvisplot-2.1.10/docs/release/releases/v1.2.6.md +61 -0
  52. jarvisplot-2.1.10/docs/release/releases/v2.1.10.md +49 -0
  53. jarvisplot-2.1.10/docs/release/releases/v2.1.6.md +58 -0
  54. jarvisplot-2.1.10/docs/release/releases/v2.1.9.md +91 -0
  55. jarvisplot-2.1.10/docs/roadmap/IMPLEMENTATION_ROADMAP.md +192 -0
  56. jarvisplot-2.1.10/docs/roadmap/README.md +21 -0
  57. jarvisplot-2.1.10/docs/roadmap/V2_AGENT_CLI_SURFACE.md +489 -0
  58. jarvisplot-2.1.10/docs/roadmap/V2_DEV_LEDGER.md +772 -0
  59. jarvisplot-2.1.10/docs/roadmap/V2_YAML_AGENT_ERGONOMICS.md +339 -0
  60. jarvisplot-2.1.10/docs/roadmap/soft-cooking-wilkinson.md +385 -0
  61. jarvisplot-2.1.10/docs/specs/AGENT_DATA_API.md +207 -0
  62. jarvisplot-2.1.10/docs/specs/CORRELATION_DIAMOND.md +486 -0
  63. jarvisplot-2.1.10/docs/specs/CORRELATION_MATRIX.md +320 -0
  64. jarvisplot-2.1.10/docs/specs/DYNESTY_RUNPLOT.md +120 -0
  65. jarvisplot-2.1.10/docs/specs/FOREST.md +183 -0
  66. jarvisplot-2.1.10/docs/specs/INTERP_2D.md +176 -0
  67. jarvisplot-2.1.10/docs/specs/LAYER_TYPE_REGISTRY.md +35 -0
  68. jarvisplot-2.1.10/docs/specs/LEGEND.md +223 -0
  69. jarvisplot-2.1.10/docs/specs/PDF_CDF_1D.md +190 -0
  70. jarvisplot-2.1.10/docs/specs/POSTERIOR_DENSITY.md +174 -0
  71. jarvisplot-2.1.10/docs/specs/PROFILE_SCHEMA.md +88 -0
  72. jarvisplot-2.1.10/docs/specs/README.md +30 -0
  73. jarvisplot-2.1.10/docs/specs/SCENE_JSON_SCHEMA.md +706 -0
  74. jarvisplot-2.1.10/docs/specs/STYLE_SCHEMA.md +222 -0
  75. jarvisplot-2.1.10/docs/specs/TRANSFORMS.md +248 -0
  76. jarvisplot-2.1.10/docs/templates/README.md +14 -0
  77. jarvisplot-2.1.10/docs/templates/profile.example.json +16 -0
  78. jarvisplot-2.1.10/docs/templates/scene.example.json +76 -0
  79. jarvisplot-2.1.10/docs/templates/style.example.json +28 -0
  80. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/figure.py +35 -63
  81. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/forest_legend.py +8 -6
  82. jarvisplot-2.1.10/jarvisplot/Figure/forest_runtime.py +488 -0
  83. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/capabilities.py +4 -3
  84. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/forest/swiss_column.json +6 -0
  85. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/legends/default/legend-card.json +5 -1
  86. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cli.py +4 -8
  87. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/core_runtime.py +3 -3
  88. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/dryrun_runtime.py +1 -1
  89. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/forest_contract.py +151 -14
  90. jarvisplot-2.1.10/jarvisplot/forest_text.py +143 -0
  91. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/legend_cards.py +41 -1
  92. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/man_render_agent.py +20 -1
  93. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/man_render_human.py +2 -1
  94. jarvisplot-2.1.10/jarvisplot/manual_cards/agent-readme.yaml +102 -0
  95. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/cli-map.yaml +4 -1
  96. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/legend.yaml +21 -0
  97. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/manifest.yaml +3 -1
  98. jarvisplot-2.1.10/jarvisplot/manual_cards/type-forest.yaml +371 -0
  99. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/core/figure.json +14 -1
  100. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/core/legend-card.json +36 -0
  101. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/core/legend.json +3 -0
  102. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/types/forest.json +139 -0
  103. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/validation.py +1 -1
  104. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/verbs/man.py +3 -1
  105. jarvisplot-2.1.10/jarvisplot/version.py +21 -0
  106. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/pyproject.toml +1 -1
  107. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_figure_contracts.py +7 -2
  108. jarvisplot-2.1.10/tests/test_forest.py +1464 -0
  109. jarvisplot-2.1.10/tests/test_forest_examples.py +70 -0
  110. jarvisplot-2.1.10/tests/test_forest_text.py +36 -0
  111. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_legend_cards.py +28 -1
  112. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_legend_runtime.py +24 -0
  113. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_man_cli.py +77 -0
  114. jarvisplot-2.1.10/tests/test_release_contract.py +74 -0
  115. jarvisplot-2.1.10/tests/test_savefig_provenance.py +85 -0
  116. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_schema_catalog.py +9 -0
  117. jarvisplot-2.1.10/tests/test_version.py +47 -0
  118. jarvisplot-2.1.10/tools/check_release.py +95 -0
  119. jarvisplot-2.1.9/jarvisplot/Figure/forest_runtime.py +0 -294
  120. jarvisplot-2.1.9/jarvisplot/forest_text.py +0 -86
  121. jarvisplot-2.1.9/jarvisplot/manual_cards/type-forest.yaml +0 -244
  122. jarvisplot-2.1.9/tests/test_forest.py +0 -619
  123. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/JarvisPLOT.egg-info/dependency_links.txt +0 -0
  124. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/JarvisPLOT.egg-info/entry_points.txt +0 -0
  125. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/JarvisPLOT.egg-info/requires.txt +0 -0
  126. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/JarvisPLOT.egg-info/top_level.txt +0 -0
  127. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/__init__.py +0 -0
  128. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/adapters_rect.py +0 -0
  129. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/adapters_ternary.py +0 -0
  130. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/adaptive_cdf_runtime.py +0 -0
  131. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/bin_stat_runtime.py +0 -0
  132. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/cards/std_axes_adapter_config.json +0 -0
  133. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/colorbar_runtime.py +0 -0
  134. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/config_runtime.py +0 -0
  135. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/corr_layout.py +0 -0
  136. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/corr_layout_diamond.py +0 -0
  137. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/corr_order.py +0 -0
  138. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/correlation_runtime.py +0 -0
  139. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/corrplot_runtime.py +0 -0
  140. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/data_pipelines.py +0 -0
  141. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/debug_config.py +0 -0
  142. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/density_cell_runtime.py +0 -0
  143. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/design_runtime.py +0 -0
  144. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/distribution_1d_runtime.py +0 -0
  145. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/dynesty_runtime.py +0 -0
  146. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/figure_types.py +0 -0
  147. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/forest_debug.py +0 -0
  148. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/helper.py +0 -0
  149. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/interp_2d_runtime.py +0 -0
  150. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/interp_natural_neighbor.py +0 -0
  151. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/interp_natural_neighbor_exact.py +0 -0
  152. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/layer_runtime.py +0 -0
  153. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/layout_runtime.py +0 -0
  154. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/legend_runtime.py +0 -0
  155. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/method_registry.py +0 -0
  156. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/posterior_density_runtime.py +0 -0
  157. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/posterior_hpd.py +0 -0
  158. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/posterior_mesh.py +0 -0
  159. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/preprocessor.py +0 -0
  160. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/preprocessor_runtime.py +0 -0
  161. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/profile_runtime.py +0 -0
  162. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/significance_runtime.py +0 -0
  163. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/Figure/style_runtime.py +0 -0
  164. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/__init__.py +0 -0
  165. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/agent_digest.py +0 -0
  166. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/agent_io.py +0 -0
  167. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cache_registry.py +0 -0
  168. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cache_store.py +0 -0
  169. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/a4paper/1x1/ternary.json +0 -0
  170. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/a4paper/2x1/dynesty_runplot.json +0 -0
  171. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/a4paper/2x1/rect.json +0 -0
  172. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/a4paper/2x1/rect5x1.json +0 -0
  173. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/a4paper/2x1/rect_cmap.json +0 -0
  174. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/a4paper/2x1/rect_marginal.json +0 -0
  175. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/a4paper/2x1/rectratio.json +0 -0
  176. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/a4paper/2x1/ternary.json +0 -0
  177. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/a4paper/2x1/ternary_cmap.json +0 -0
  178. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/a4paper/4x1/rect.json +0 -0
  179. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/a4paper/4x1/rect_cmap.json +0 -0
  180. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/a4paper/4x1/ternary.json +0 -0
  181. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/a4paper/4x1/ternary_cmap.json +0 -0
  182. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/args.json +0 -0
  183. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/colors/colormaps.json +0 -0
  184. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/corrplot/diamond.json +0 -0
  185. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/corrplot/matrix.json +0 -0
  186. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/default/output.json +0 -0
  187. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/flowchart/default.json +0 -0
  188. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/gambit/1x1/ternary.json +0 -0
  189. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/gambit/2x1/rect_cmap.json +0 -0
  190. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/gambit/2x1/ternary.json +0 -0
  191. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/gambit/2x1/ternary_cmap.json +0 -0
  192. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/icons/JarvisHEP.png +0 -0
  193. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/icons/flowchart/JarvisHEP.png +0 -0
  194. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/icons/flowchart/calculator.png +0 -0
  195. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/icons/flowchart/inputfile.png +0 -0
  196. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/icons/flowchart/opera.png +0 -0
  197. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/icons/flowchart/outputfile.png +0 -0
  198. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/icons/flowchart/sampler.png +0 -0
  199. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/icons/gambit.png +0 -0
  200. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/icons/gambit_small.png +0 -0
  201. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/legends/compact/legend-card.json +0 -0
  202. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/legends/paper/legend-card.json +0 -0
  203. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/legends/presentation/legend-card.json +0 -0
  204. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cards/style_preference.json +0 -0
  205. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/cli_help.py +0 -0
  206. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/client.py +0 -0
  207. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/column_demand.py +0 -0
  208. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/column_probe.py +0 -0
  209. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/config.py +0 -0
  210. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/config_address.py +0 -0
  211. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/core.py +0 -0
  212. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/core_assets.py +0 -0
  213. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/data_access.py +0 -0
  214. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/data_generation_contracts.py +0 -0
  215. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/data_loader.py +0 -0
  216. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/data_loader_hdf5.py +0 -0
  217. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/data_loader_runtime.py +0 -0
  218. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/data_loader_summary.py +0 -0
  219. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/dataset_types.py +0 -0
  220. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/diagnostic_guidance.py +0 -0
  221. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/diagnostics.py +0 -0
  222. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/distribution_1d_config.py +0 -0
  223. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/expr_names.py +0 -0
  224. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/fix_apply.py +0 -0
  225. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/flowchart.py +0 -0
  226. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/generated_data.py +0 -0
  227. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/inner_func.py +0 -0
  228. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/man_catalog.py +0 -0
  229. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/man_methods.py +0 -0
  230. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/man_transforms.py +0 -0
  231. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/agent-output.yaml +0 -0
  232. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/cache.yaml +0 -0
  233. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/data-columns.yaml +0 -0
  234. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/debug-overlay.yaml +0 -0
  235. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/diagnostics.yaml +0 -0
  236. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/dryrun-viz.yaml +0 -0
  237. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/field-interp.yaml +0 -0
  238. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/generated-data.yaml +0 -0
  239. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/layer-method.yaml +0 -0
  240. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/method_notes.yaml +0 -0
  241. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/style-axes.yaml +0 -0
  242. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/type-correlation-matrix.yaml +0 -0
  243. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/type-posterior-2d.yaml +0 -0
  244. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/type-profile-2d.yaml +0 -0
  245. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/validate.yaml +0 -0
  246. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/workflow.yaml +0 -0
  247. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/manual_cards/yaml-root.yaml +0 -0
  248. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/memtrace.py +0 -0
  249. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/method_contracts.py +0 -0
  250. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/render_health.py +0 -0
  251. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/core/common.json +0 -0
  252. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/core/dataset.json +0 -0
  253. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/core/distribution-1d.json +0 -0
  254. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/core/generated-data.json +0 -0
  255. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/core/layer.json +0 -0
  256. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/core/transform.json +0 -0
  257. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/manifest.json +0 -0
  258. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/bar.json +0 -0
  259. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/barh.json +0 -0
  260. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/contour.json +0 -0
  261. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/contourf.json +0 -0
  262. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/corrplot.json +0 -0
  263. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/dynesty_runplot.json +0 -0
  264. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/errorbar.json +0 -0
  265. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/fill.json +0 -0
  266. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/fill_between.json +0 -0
  267. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/fill_betweenx.json +0 -0
  268. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/hist.json +0 -0
  269. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/hist2d.json +0 -0
  270. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/imshow.json +0 -0
  271. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/jpcontour.json +0 -0
  272. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/jpcontourf.json +0 -0
  273. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/jpfield.json +0 -0
  274. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/pcolor.json +0 -0
  275. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/pcolormesh.json +0 -0
  276. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/plot.json +0 -0
  277. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/quiver.json +0 -0
  278. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/scatter.json +0 -0
  279. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/stairs.json +0 -0
  280. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/step.json +0 -0
  281. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/tricontour.json +0 -0
  282. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/tricontourf.json +0 -0
  283. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/tripcolor.json +0 -0
  284. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/tripcolor_axes.json +0 -0
  285. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/triplot.json +0 -0
  286. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/voronoi.json +0 -0
  287. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/methods/voronoif.json +0 -0
  288. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema/plot-config.json +0 -0
  289. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema_catalog.py +0 -0
  290. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/schema_diagnostics.py +0 -0
  291. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/templates_catalog.py +0 -0
  292. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/transform_contracts.py +0 -0
  293. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/utils/__init__.py +0 -0
  294. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/utils/cmaps.py +0 -0
  295. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/utils/dataframes.py +0 -0
  296. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/utils/expression.py +0 -0
  297. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/utils/interpolator.py +0 -0
  298. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/utils/pathing.py +0 -0
  299. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/verbs/__init__.py +0 -0
  300. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/verbs/cache.py +0 -0
  301. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/verbs/cap.py +0 -0
  302. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/verbs/config_cmd.py +0 -0
  303. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/verbs/data.py +0 -0
  304. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/verbs/doctor.py +0 -0
  305. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/verbs/dryrun.py +0 -0
  306. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/verbs/explain.py +0 -0
  307. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/verbs/suggest.py +0 -0
  308. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/verbs/template.py +0 -0
  309. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/verbs/validate.py +0 -0
  310. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/jarvisplot/yaml_io.py +0 -0
  311. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/setup.cfg +0 -0
  312. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_adaptive_cdf.py +0 -0
  313. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_add_column.py +0 -0
  314. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_agent_digest.py +0 -0
  315. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_agent_envelope.py +0 -0
  316. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_axis_title.py +0 -0
  317. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_cache_cleanup.py +0 -0
  318. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_cache_registry.py +0 -0
  319. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_capabilities.py +0 -0
  320. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_card_debug_shape.py +0 -0
  321. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_cli_help.py +0 -0
  322. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_cli_verbs.py +0 -0
  323. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_cmaps.py +0 -0
  324. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_column_existence.py +0 -0
  325. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_column_pruning.py +0 -0
  326. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_config_addressing.py +0 -0
  327. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_config_edit.py +0 -0
  328. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_config_expand.py +0 -0
  329. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_correlation_runtime.py +0 -0
  330. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_corrplot.py +0 -0
  331. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_data_access.py +0 -0
  332. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_data_describe.py +0 -0
  333. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_data_head_eval.py +0 -0
  334. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_data_loader_contracts.py +0 -0
  335. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_data_pipelines.py +0 -0
  336. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_debug_config.py +0 -0
  337. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_debug_switches.py +0 -0
  338. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_debug_yaml_override.py +0 -0
  339. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_density_cell_transform.py +0 -0
  340. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_design_runtime.py +0 -0
  341. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_diagnostic_guidance.py +0 -0
  342. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_distribution_1d_transform.py +0 -0
  343. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_docs_status_labels.py +0 -0
  344. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_doctor_partial.py +0 -0
  345. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_examples_validate.py +0 -0
  346. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_explain.py +0 -0
  347. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_expression_semantics.py +0 -0
  348. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_figure_type_expander.py +0 -0
  349. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_fix_application.py +0 -0
  350. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_flowchart_renderer.py +0 -0
  351. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_generated_data.py +0 -0
  352. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_imshow_adapter.py +0 -0
  353. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_interp_2d_transform.py +0 -0
  354. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_interp_natural_neighbor.py +0 -0
  355. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_interpolator_contracts.py +0 -0
  356. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_jpcontour_methods.py +0 -0
  357. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_layer_legend.py +0 -0
  358. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_method_contracts.py +0 -0
  359. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_parse_data_metadata.py +0 -0
  360. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_pathing_contracts.py +0 -0
  361. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_posterior_hpd.py +0 -0
  362. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_profile_runtime.py +0 -0
  363. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_render_health.py +0 -0
  364. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_render_lifecycle.py +0 -0
  365. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_row_ledger.py +0 -0
  366. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_suggest.py +0 -0
  367. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_suggest_axes.py +0 -0
  368. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_template_catalog.py +0 -0
  369. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_template_json.py +0 -0
  370. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_ternary_debug.py +0 -0
  371. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_transform_contracts.py +0 -0
  372. {jarvisplot-2.1.9 → jarvisplot-2.1.10}/tests/test_validate_no_matplotlib.py +0 -0
@@ -0,0 +1,69 @@
1
+ # Native forest examples
2
+
3
+ - `interval.yaml`: generic supplied estimates/bounds, string IDs with leading zeros.
4
+ - `box.yaml`: generic supplied quartiles/whiskers and observations, including a point-only row.
5
+ - `multi-interval.yaml`: two supplied boxes, ten original points per row, three interval classes,
6
+ field-based values, lane offsets, a black common mean ± SD legend key, explicit ticks,
7
+ MathText row/cut labels and a caller-supplied header note.
8
+ - `intervals-only.yaml`: row IDs/labels plus three intervals per row; no primary glyph or scatter source.
9
+ - `real-demo.yaml`: producer-exported generic tables, 97 rows/241 points. This fixture preserves supplied box coordinates, classification and annotations. Producer-specific metadata in CSV is inspectable and never used by the renderer.
10
+
11
+ Run `jplot validate Example/forest/real-demo.yaml --json`, `jplot doctor Example/forest/real-demo.yaml --json`, then `jplot Example/forest/real-demo.yaml --report`. Outputs go to `Workshop/forest_native/`; each native PNG/SVG has a `.layout.json` receipt with shared limits/ticks, physical positions, annotations, styles and verification. Generated images/reports are not package assets.
12
+
13
+ The two multi-interval examples write PNG/PDF and receipts only to
14
+ `/tmp/jarvisplot-forest-examples`. They select the commonly installed DejaVu Sans font;
15
+ the original examples retain the Swiss card's Helvetica default. Run with the official package:
16
+
17
+ ```sh
18
+ jplot validate Example/forest/multi-interval.yaml --json
19
+ jplot doctor Example/forest/multi-interval.yaml --json
20
+ jplot Example/forest/multi-interval.yaml --report
21
+ jplot validate Example/forest/intervals-only.yaml --json
22
+ jplot doctor Example/forest/intervals-only.yaml --json
23
+ jplot Example/forest/intervals-only.yaml --report
24
+ ```
25
+
26
+ `summary-rows.csv` supplies the already formatted box values; `summary-intervals.csv`
27
+ supplies interval endpoints and already formatted mean ± SD values. The examples are
28
+ illustrative supplied data, not a statistical reconstruction from the scatter sample.
29
+ Class names are arbitrary. `interval_fields` can map noncanonical CSV headers without
30
+ renaming files. `glyph_offset_mm` shifts the box and its points together; overlay `offset_mm`
31
+ sets independent interval lanes. A positive `value_column_mm` reserves a right-hand values
32
+ strip; zero keeps the full numerical width and requires room beside every interval.
33
+ Long annotations or marks near a boundary fail explicitly when their measured ink does not fit.
34
+
35
+ `multi-interval.yaml` gives the primary box/points and the three summary intervals equal
36
+ 5 mm halves of the 10 mm mark band. Its plot centre is 7.5 mm, primary offset -2.5 mm,
37
+ and summary offsets 0.85/2.5/4.15 mm. This puts the primary distribution higher and the
38
+ summary group lower with equal allocated vertical space. Legend formulas default to
39
+ STIX; `frame.ax.legend.prop.math_fontfamily: dejavusans` restores the previous look.
40
+ `jplot man legend --json` documents formula and ordinary legend font controls.
41
+ The cut description explicitly sets `description.math: true` and
42
+ `description.math_fontfamily: stix`; legend font settings do not change cut fonts.
43
+
44
+ Use `jplot man forest --json`, `jplot template show forest --json`, and `jplot config expand Example/forest/real-demo.yaml --figure forest-all-97 --json` for discovery/inspection. Config expansion preserves the native high-level type and returns its solved scene in `data.forests`.
45
+
46
+ The real demo declares Bin/W/P/E/n/CV columns. Column names and units appear only at the top; body cells contain values, with n formatted .0f and CV .1f. title/description are standard text blocks. The 20 mm footer has three sections: the glyph sample starts at reference column 2, point classes at column 5, and the unchanged YAML description at column 8. Description wraps in the last five reference columns; the header is now 20 mm. The standard Jarvis-HEP icon stays at bottom left, sharing height with the point column; the full figure is 82.5 x 573.5 mm.
47
+
48
+ Columns use role: row_name/left/right. Bin is the row name; W/P/E form the compact left group; n/CV form the right group. Widths follow actual header/body font metrics, with no manual width declarations. Text sits near the top of each row; the full-width common numerical band below it contains the distributions and observations, extending horizontally beneath both text groups.
49
+
50
+ Swiss style: installed Helvetica regular/bold; 9 pt title; 12 reference columns; compact left-aligned left cells and right-aligned right cells; black, white, Jarvis blue and red #DA291C. Widths follow actual text metrics without grid rounding; default gaps are 0.8 mm. `real-demo-debug.yaml` enables the separate grid/baseline/band overlay. `meta` controls the optional number/year/place.
51
+
52
+ The normal chart shows a shared top numerical axis and continuous vertical grid; row rules/per-row axes are removed. `x.ticks` supplies explicit short marks and top/bottom labels. `forest.grid` independently controls numerical lines and deduplicates coincident coordinates; divisions do not add ticks. `debug.forest_grid` controls the separate design overlay.
53
+
54
+ The default canvas is white, with no row shading, numbered metadata or legend heading. Point legend markers and their labels are left aligned using compact keys.
55
+
56
+ For a study previously using `jarvis_forest_preview`, install the formal project in the same
57
+ Python environment (`python -m pip install -e /Users/p.zhu/Jarvis-Workshop/Jarvis-PLOT`),
58
+ remove its preview path from the shell/launcher PYTHONPATH, and call the formal `jplot` on
59
+ the existing YAML. The native interface accepts the established `intervals`, annotation,
60
+ MathText, header_note and geometry keys; no task-specific names or data conversion are needed.
61
+ For a one-off check use `env -u PYTHONPATH jplot validate <existing.yaml> --json`, followed
62
+ by doctor and rendering in that clean environment. Verify `jplot --version` in that environment.
63
+ To preserve existing study figures during verification, use a temporary YAML with only
64
+ `project.workdir` and `output.dir` redirected to a temporary directory; retain the absolute
65
+ source paths and all Figures/coordinates/statistical strings. Normal image output is governed
66
+ by YAML `output.dir`, not the CLI `-o` flag.
67
+
68
+ AI agents should read `jplot man agent-readme --json` before authoring YAML or reporting a
69
+ missing feature; it includes the installed-version and feature-request feedback requirements.
@@ -0,0 +1,25 @@
1
+ version: '0.3'
2
+ DataSet:
3
+ - name: rows
4
+ path: ./data/box.csv
5
+ type: csv
6
+ - name: observations
7
+ path: ./data/points.csv
8
+ type: csv
9
+ Figures:
10
+ - name: forest-box
11
+ type: forest
12
+ data: rows
13
+ glyph: box
14
+ title:
15
+ text: Generic box comparison
16
+ x:
17
+ label: Supplied coordinates
18
+ reference: 0
19
+ points: observations
20
+ output:
21
+ dir: ../../Workshop/forest_native
22
+ formats:
23
+ - png
24
+ - svg
25
+ dpi: 220
@@ -0,0 +1,3 @@
1
+ row,label,detail,stats,lower,q1,median,q3,upper
2
+ 01,A,Treated,n=3,-2,-1,0,1,2
3
+ 02,B,Control,n=1,,,,,
@@ -0,0 +1,242 @@
1
+ row,id,x,class,source_value
2
+ B001,5082,-6.8649885583523975,normal,740.0
3
+ B001,5083,-6.8649885583523975,normal,740.0
4
+ B001,5087,5.720823798627007,normal,840.0
5
+ B001,5154,-3.0892448512585764,normal,770.0
6
+ B001,5207,0.6864988558352455,normal,800.0
7
+ B001,5208,3.2036613272311265,normal,820.0
8
+ B001,5286,22.082379862700236,outlier,970.0
9
+ B001,5330,-9.382151029748279,normal,720.0
10
+ B001,5366,-11.89931350114416,normal,700.0
11
+ B001,5450,8.237986270022889,normal,860.0
12
+ B001,484,-1.8306636155606357,normal,780.0
13
+ B002,5061,-6.134969325153375,normal,680.0
14
+ B002,5062,6.288343558282207,normal,770.0
15
+ B002,5211,-14.41717791411043,normal,620.0
16
+ B002,5305,-15.79754601226994,normal,610.0
17
+ B002,5447,21.47239263803681,normal,880.0
18
+ B002,5452,-13.036809815950921,normal,630.0
19
+ B002,551,2.1472392638036792,normal,740.0
20
+ B002,524,15.950920245398772,normal,840.0
21
+ B002,554,3.5276073619631885,normal,750.0
22
+ B003,5064,-9.090909090909092,normal,700.0
23
+ B003,5147,-5.194805194805195,normal,730.0
24
+ B003,5297,-3.896103896103896,normal,740.0
25
+ B003,5299,-2.5974025974025974,normal,750.0
26
+ B003,5436,5.194805194805195,normal,810.0
27
+ B003,5449,-5.194805194805195,normal,730.0
28
+ B003,5469,16.883116883116884,normal,900.0
29
+ B003,493,-1.2987012987012987,normal,760.0
30
+ B003,501,5.194805194805195,normal,810.0
31
+ B004,5032,-6.557377049180328,normal,570.0
32
+ B004,5161,-29.508196721311474,normal,430.0
33
+ B004,5167,13.114754098360656,normal,690.0
34
+ B004,5271,-22.950819672131146,normal,470.0
35
+ B004,5461,-3.278688524590164,normal,590.0
36
+ B004,535,22.950819672131146,normal,750.0
37
+ B004,546,29.508196721311474,normal,790.0
38
+ B004,560,-3.278688524590164,normal,590.0
39
+ B005,5094,-1.5384615384615385,normal,880.0
40
+ B005,5111,6.293706293706293,normal,950.0
41
+ B005,5178,17.482517482517483,outlier,1050.0
42
+ B005,5235,0.6993006993006993,normal,900.0
43
+ B005,5279,-11.608391608391608,normal,790.0
44
+ B005,5290,-1.5384615384615385,normal,880.0
45
+ B005,5326,-6.013986013986014,normal,840.0
46
+ B005,5451,-3.7762237762237763,normal,860.0
47
+ B006,5092,-22.693997071742313,normal,660.0
48
+ B006,5101,-16.837481698389457,normal,710.0
49
+ B006,5195,7.759882869692533,normal,920.0
50
+ B006,5219,7.759882869692533,normal,920.0
51
+ B006,5368,0.7320644216691069,normal,860.0
52
+ B006,5384,18.301610541727673,normal,1010.0
53
+ B006,5423,-2.781844802342606,normal,830.0
54
+ B006,568,7.759882869692533,normal,920.0
55
+ B007,5069,-18.620689655172413,normal,590.0
56
+ B007,5090,3.4482758620689653,normal,750.0
57
+ B007,5127,18.620689655172413,normal,860.0
58
+ B007,5310,-11.724137931034482,normal,640.0
59
+ B007,491,8.96551724137931,normal,790.0
60
+ B007,562,-0.6896551724137931,normal,720.0
61
+ B008,5033,-2.9585798816568047,normal,820.0
62
+ B008,5038,6.508875739644971,normal,900.0
63
+ B008,5150,0.591715976331361,normal,850.0
64
+ B008,5173,-1.7751479289940828,normal,830.0
65
+ B008,5378,-11.242603550295858,normal,750.0
66
+ B008,5419,8.875739644970414,normal,920.0
67
+ B009,5011,2.6737967914438503,normal,960.0
68
+ B009,5100,0.5347593582887701,normal,940.0
69
+ B009,5477,3.7433155080213902,normal,970.0
70
+ B009,5515,0.5347593582887701,normal,940.0
71
+ B009,5531,-9.090909090909092,outlier,850.0
72
+ B009,485,1.6042780748663101,normal,950.0
73
+ B010,468,11.688311688311689,unrated,860.0
74
+ B010,525,-16.883116883116884,unrated,640.0
75
+ B010,541,16.883116883116884,unrated,900.0
76
+ B010,545,-1.2987012987012987,unrated,760.0
77
+ B010,547,-10.38961038961039,unrated,690.0
78
+ B011,5025,-6.947890818858561,unrated,750.0
79
+ B011,5133,-13.15136476426799,unrated,700.0
80
+ B011,5209,2.977667493796526,unrated,830.0
81
+ B011,5248,9.181141439205955,unrated,880.0
82
+ B011,5492,7.94044665012407,unrated,870.0
83
+ B012,5109,17.045454545454547,unrated,1030.0
84
+ B012,5229,-28.40909090909091,unrated,630.0
85
+ B012,5325,11.363636363636363,unrated,980.0
86
+ B012,5358,1.1363636363636365,unrated,890.0
87
+ B012,490,-1.1363636363636365,unrated,870.0
88
+ B013,5055,-9.637471839826445,unrated,820.0
89
+ B013,5139,-1.9235974846896788,unrated,890.0
90
+ B013,5193,16.810097377785326,unrated,1060.0
91
+ B013,5204,-8.53548978909262,unrated,830.0
92
+ B013,5353,3.286461735823407,unrated,937.2789844176104
93
+ B014,5174,-1.3015184381778742,unrated,910.0
94
+ B014,5228,-15.401301518438178,unrated,780.0
95
+ B014,5239,8.459869848156183,unrated,1000.0
96
+ B014,5240,6.290672451193059,unrated,980.0
97
+ B014,477,1.9522776572668112,unrated,940.0
98
+ B015,5170,-7.462686567164179,unrated,620.0
99
+ B015,5343,5.970149253731344,unrated,710.0
100
+ B015,5486,-2.985074626865672,unrated,650.0
101
+ B015,569,4.477611940298507,unrated,700.0
102
+ B016,5051,-20.0375529514398,unrated,600.0
103
+ B016,5261,22.79685023165795,unrated,921.4088970320151
104
+ B016,5357,-4.045063541727761,unrated,720.0
105
+ B016,5399,1.2857662615095853,unrated,760.0
106
+ B017,5081,1.2987012987012987,unrated,780.0
107
+ B017,5333,12.987012987012987,unrated,870.0
108
+ B017,5427,-7.792207792207792,unrated,710.0
109
+ B017,5467,-6.4935064935064934,unrated,720.0
110
+ B018,5349,-9.26517571884984,unrated,710.0
111
+ B018,5388,-5.431309904153355,unrated,740.0
112
+ B018,5433,7.348242811501597,unrated,840.0
113
+ B018,531,7.348242811501597,unrated,840.0
114
+ B019,5171,-12.994350282485875,unrated,770.0
115
+ B019,5222,0.5649717514124294,unrated,890.0
116
+ B019,5259,12.994350282485875,unrated,1000.0
117
+ B019,5283,-0.5649717514124294,unrated,880.0
118
+ B020,5166,-1.2594458438287153,unrated,980.0
119
+ B020,5181,-4.282115869017632,unrated,950.0
120
+ B020,5187,9.82367758186398,unrated,1090.0
121
+ B020,5238,-4.282115869017632,unrated,950.0
122
+ B021,5096,2.3017902813299234,unrated,1000.0
123
+ B021,5227,8.439897698209718,unrated,1060.0
124
+ B021,5237,-2.813299232736573,unrated,950.0
125
+ B021,5410,-7.928388746803069,unrated,900.0
126
+ B022,521,9.879518072289157,unrated,1140.0
127
+ B022,529,-13.25301204819277,unrated,900.0
128
+ B022,539,10.843373493975903,unrated,1150.0
129
+ B022,511,-7.469879518072289,unrated,960.0
130
+ B023,5060,-10.550458715596324,unrated,650.0
131
+ B023,5389,5.963302752293584,unrated,770.0
132
+ B023,5503,4.587155963302758,unrated,760.0
133
+ B024,5186,-9.163346613545812,unrated,760.0
134
+ B024,5199,8.76494023904383,unrated,910.0
135
+ B024,5394,0.39840637450199656,unrated,840.0
136
+ B025,5130,2.2727272727272676,unrated,750.0
137
+ B025,5478,-3.181818181818187,unrated,710.0
138
+ B025,5550,0.9090909090909038,unrated,740.0
139
+ B026,5132,-7.112970711297066,unrated,740.0
140
+ B026,5189,10.46025104602511,unrated,880.0
141
+ B026,5328,-3.347280334728029,unrated,770.0
142
+ B027,5141,2.491103202846979,unrated,960.0
143
+ B027,5168,-1.7793594306049783,unrated,920.0
144
+ B027,5266,-0.7117437722419888,unrated,930.0
145
+ B028,5256,-2.702702702702707,unrated,840.0
146
+ B028,5430,-0.3861003861003905,unrated,860.0
147
+ B028,5660,3.0888030888030844,unrated,890.0
148
+ B029,5197,11.188811188811185,unrated,1060.0
149
+ B029,5262,-5.594405594405599,unrated,900.0
150
+ B029,5470,-5.594405594405599,unrated,900.0
151
+ B030,5203,-16.853932584269664,unrated,740.0
152
+ B030,5232,7.865168539325842,unrated,960.0
153
+ B030,5466,8.98876404494382,unrated,970.0
154
+ B031,5272,8.256880733944953,unrated,1180.0
155
+ B031,473,1.834862385321101,unrated,1110.0
156
+ B031,591,-10.091743119266056,unrated,980.0
157
+ B032,5172,9.634551495016607,unrated,1100.0
158
+ B032,5253,-5.315614617940203,unrated,950.0
159
+ B032,5500,-4.318936877076416,unrated,960.0
160
+ B033,5327,8.45481049562683,unrated,1240.0
161
+ B033,474,-4.664723032069965,unrated,1090.0
162
+ B033,500,-3.790087463556845,unrated,1100.0
163
+ B034,536,5.128205128205129,unrated,820.0
164
+ B034,555,-5.128205128205129,unrated,740.0
165
+ B035,5138,-5.084745762711864,unrated,560.0
166
+ B035,5225,5.084745762711864,unrated,620.0
167
+ B036,5097,-3.4482758620689653,unrated,560.0
168
+ B036,5441,3.4482758620689653,unrated,600.0
169
+ B037,5058,-8.771929824561404,unrated,520.0
170
+ B037,5110,8.771929824561404,unrated,620.0
171
+ B038,5401,1.2820512820512822,unrated,790.0
172
+ B038,585,-1.2820512820512822,unrated,770.0
173
+ B039,5180,4.225352112676056,unrated,740.0
174
+ B039,5308,-4.225352112676056,unrated,680.0
175
+ B040,5084,10.416666666666666,unrated,1060.0
176
+ B040,5316,-10.416666666666666,unrated,860.0
177
+ B041,5404,1.0869565217391304,unrated,930.0
178
+ B041,5517,-1.0869565217391304,unrated,910.0
179
+ B042,5128,-1.8867924528301887,unrated,780.0
180
+ B042,5214,1.8867924528301887,unrated,810.0
181
+ B043,5134,-8.0,unrated,920.0
182
+ B043,550,8.0,unrated,1080.0
183
+ B044,5440,8.085106382978724,unrated,1270.0
184
+ B044,519,-8.085106382978724,unrated,1080.0
185
+ B045,5089,-5.333333333333333,unrated,710.0
186
+ B045,5428,5.333333333333333,unrated,790.0
187
+ B046,5196,4.25531914893617,unrated,980.0
188
+ B046,5220,-4.25531914893617,unrated,900.0
189
+ B047,502,2.0202020202020203,unrated,1010.0
190
+ B047,512,-2.0202020202020203,unrated,970.0
191
+ B048,515,6.315789473684211,unrated,1010.0
192
+ B048,518,-6.315789473684211,unrated,890.0
193
+ B049,5379,2.830188679245283,unrated,1090.0
194
+ B049,472,-2.830188679245283,unrated,1030.0
195
+ B050,465,0.0,singleton,580.0
196
+ B051,553,0.0,singleton,650.0
197
+ B052,5370,0.0,singleton,510.0
198
+ B053,565,0.0,singleton,720.0
199
+ B054,5493,0.0,singleton,630.0
200
+ B055,5265,0.0,singleton,700.0
201
+ B056,5148,0.0,singleton,530.0
202
+ B057,5103,0.0,singleton,630.0
203
+ B058,5530,0.0,singleton,650.0
204
+ B059,5291,0.0,singleton,750.0
205
+ B060,5231,0.0,singleton,680.0
206
+ B061,5439,0.0,singleton,760.0
207
+ B062,5071,0.0,singleton,773.543758830446
208
+ B063,5009,0.0,singleton,441.5759247750045
209
+ B064,5104,0.0,singleton,820.0
210
+ B065,5215,0.0,singleton,670.0
211
+ B066,5163,0.0,singleton,700.0
212
+ B067,471,0.0,singleton,850.0
213
+ B068,583,0.0,singleton,950.0
214
+ B069,5387,0.0,singleton,810.0
215
+ B070,572,0.0,singleton,780.0
216
+ B071,5257,0.0,singleton,740.0
217
+ B072,522,0.0,singleton,810.0
218
+ B073,592,0.0,singleton,960.0
219
+ B074,5184,0.0,singleton,850.0
220
+ B075,5216,0.0,singleton,900.0
221
+ B076,574,0.0,singleton,880.0
222
+ B077,5429,0.0,singleton,701.2549765309261
223
+ B078,5123,0.0,singleton,820.0
224
+ B079,5088,0.0,singleton,830.0
225
+ B080,578,0.0,singleton,810.0
226
+ B081,579,0.0,singleton,970.0
227
+ B082,573,0.0,singleton,1090.0
228
+ B083,5245,0.0,singleton,907.3383471852242
229
+ B084,480,0.0,singleton,930.0
230
+ B085,5282,0.0,singleton,870.0
231
+ B086,5136,0.0,singleton,860.0
232
+ B087,5247,0.0,singleton,880.0
233
+ B088,575,0.0,singleton,880.0
234
+ B089,537,0.0,singleton,1150.0
235
+ B090,5050,0.0,singleton,980.0
236
+ B091,5223,0.0,singleton,900.0
237
+ B092,489,0.0,singleton,990.0
238
+ B093,5285,0.0,singleton,780.0
239
+ B094,571,0.0,singleton,1290.0
240
+ B095,5042,0.0,singleton,1228.4976127923678
241
+ B096,497,0.0,singleton,990.0
242
+ B097,476,0.0,singleton,1160.0
@@ -0,0 +1,98 @@
1
+ row,label,detail,stats,estimate,lower,q1,median,q3,upper,n,cv,W,P,E,target,cell,raw_mean
2
+ B001,B001,"W[160,170) P[16,24) E[70,80)",n 11 CV 9.7%,0,-11.89931350114416,-6.8649885583523975,-1.8306636155606357,4.462242562929067,8.237986270022889,11,9.673302374472604,"[160, 170)","[16, 24)","[70, 80)",y16,"[160, 170) | [16, 24) | [70, 80)",794.5454545454545
3
+ B002,B002,"W[140,150) P[8,16) E[60,70)",n 9 CV 13.4%,0,-15.79754601226994,-13.036809815950921,2.1472392638036792,6.288343558282207,21.47239263803681,9,13.402924843830837,"[140, 150)","[8, 16)","[60, 70)",y16,"[140, 150) | [8, 16) | [60, 70)",724.4444444444445
4
+ B003,B003,"W[150,160) P[8,16) E[70,80)",n 9 CV 7.9%,0,-9.090909090909092,-5.194805194805195,-2.5974025974025974,5.194805194805195,16.883116883116884,9,7.899691597789896,"[150, 160)","[8, 16)","[70, 80)",y16,"[150, 160) | [8, 16) | [70, 80)",770.0
5
+ B004,B004,"W[120,130) P[8,16) E[50,60)",n 8 CV 20.8%,0,-29.508196721311474,-10.655737704918032,-3.278688524590164,15.573770491803279,29.508196721311474,8,20.810173200489984,"[120, 130)","[8, 16)","[50, 60)",y16,"[120, 130) | [8, 16) | [50, 60)",610.0
6
+ B005,B005,"W[160,170) P[16,24) E[60,70)",n 8 CV 8.7%,0,-11.608391608391608,-4.335664335664336,-1.5384615384615385,2.097902097902098,6.293706293706293,8,8.747689941880779,"[160, 170)","[16, 24)","[60, 70)",y16,"[160, 170) | [16, 24) | [60, 70)",893.75
7
+ B006,B006,"W[170,180) P[16,24) E[70,80)",n 8 CV 13.7%,0,-22.693997071742313,-6.295754026354318,4.24597364568082,7.759882869692533,18.301610541727673,8,13.744553034008797,"[170, 180)","[16, 24)","[70, 80)",y16,"[170, 180) | [16, 24) | [70, 80)",853.75
8
+ B007,B007,"W[150,160) P[16,24) E[60,70)",n 6 CV 13.6%,0,-18.620689655172413,-8.96551724137931,1.3793103448275863,7.586206896551723,18.620689655172413,6,13.59163203428967,"[150, 160)","[16, 24)","[60, 70)",y16,"[150, 160) | [16, 24) | [60, 70)",725.0
9
+ B008,B008,"W[160,170) P[8,16) E[60,70)",n 6 CV 7.2%,0,-11.242603550295858,-2.662721893491124,-0.591715976331361,5.029585798816568,8.875739644970414,6,7.208256725605236,"[160, 170)","[8, 16)","[60, 70)",y16,"[160, 170) | [8, 16) | [60, 70)",845.0
10
+ B009,B009,"W[170,180) P[16,24) E[80,90)",n 6 CV 4.6%,0,0.5347593582887701,0.5347593582887701,1.0695187165775402,2.406417112299465,3.7433155080213902,6,4.624972900628802,"[170, 180)","[16, 24)","[80, 90)",y16,"[170, 180) | [16, 24) | [80, 90)",935.0
11
+ B010,B010,"W[120,130) P[8,16) E[60,70)",n 5 CV 14.3%,0,,,,,,5,14.285714285714286,"[120, 130)","[8, 16)","[60, 70)",y16,"[120, 130) | [8, 16) | [60, 70)",770.0
12
+ B011,B011,"W[160,170) P[8,16) E[70,80)",n 5 CV 9.7%,0,,,,,,5,9.713935052636915,"[160, 170)","[8, 16)","[70, 80)",y16,"[160, 170) | [8, 16) | [70, 80)",806.0
13
+ B012,B012,"W[170,180) P[8,16) E[70,80)",n 5 CV 17.5%,0,,,,,,5,17.53096434152445,"[170, 180)","[8, 16)","[70, 80)",y16,"[170, 180) | [8, 16) | [70, 80)",880.0
14
+ B013,B013,"W[180,190) P[8,16) E[70,80)",n 5 CV 10.8%,0,,,,,,5,10.756578002296004,"[180, 190)","[8, 16)","[70, 80)",y16,"[180, 190) | [8, 16) | [70, 80)",907.4557968835221
15
+ B014,B014,"W[190,200) P[16,24) E[80,90)",n 5 CV 9.4%,0,,,,,,5,9.405415786845467,"[190, 200)","[16, 24)","[80, 90)",y16,"[190, 200) | [16, 24) | [80, 90)",922.0
16
+ B015,B015,"W[130,140) P[8,16) E[60,70)",n 4 CV 6.3%,0,,,,,,4,6.332299533013858,"[130, 140)","[8, 16)","[60, 70)",y16,"[130, 140) | [8, 16) | [60, 70)",670.0
17
+ B016,B016,"W[150,160) P[16,24) E[50,60)",n 4 CV 17.7%,0,,,,,,4,17.69383737069914,"[150, 160)","[16, 24)","[50, 60)",y16,"[150, 160) | [16, 24) | [50, 60)",750.3522242580038
18
+ B017,B017,"W[150,160) P[8,16) E[60,70)",n 4 CV 9.5%,0,,,,,,4,9.543466530324071,"[150, 160)","[8, 16)","[60, 70)",y16,"[150, 160) | [8, 16) | [60, 70)",770.0
19
+ B018,B018,"W[150,160) P[8,16) E[80,90)",n 4 CV 8.6%,0,,,,,,4,8.628170010875014,"[150, 160)","[8, 16)","[80, 90)",y16,"[150, 160) | [8, 16) | [80, 90)",782.5
20
+ B019,B019,"W[170,180) P[16,24) E[60,70)",n 4 CV 10.6%,0,,,,,,4,10.61986604886756,"[170, 180)","[16, 24)","[60, 70)",y16,"[170, 180) | [16, 24) | [60, 70)",885.0
21
+ B020,B020,"W[180,190) P[8,16) E[80,90)",n 4 CV 6.7%,0,,,,,,4,6.702334859269557,"[180, 190)","[8, 16)","[80, 90)",y16,"[180, 190) | [8, 16) | [80, 90)",992.5
22
+ B021,B021,"W[190,200) P[16,24) E[70,80)",n 4 CV 7.0%,0,,,,,,4,7.007237029167781,"[190, 200)","[16, 24)","[70, 80)",y16,"[190, 200) | [16, 24) | [70, 80)",977.5
23
+ B022,B022,"W[200,210) P[8,16) E[110,120)",n 4 CV 12.2%,0,,,,,,4,12.201435085467145,"[200, 210)","[8, 16)","[110, 120)",y16,"[200, 210) | [8, 16) | [110, 120)",1037.5
24
+ B023,B023,"W[140,150) P[8,16) E[50,60)",n 3 CV 9.2%,0,,,,,,3,9.162836860292744,"[140, 150)","[8, 16)","[50, 60)",y16,"[140, 150) | [8, 16) | [50, 60)",726.6666666666666
25
+ B024,B024,"W[150,160) P[16,24) E[80,90)",n 3 CV 9.0%,0,,,,,,3,8.97078107505793,"[150, 160)","[16, 24)","[80, 90)",y16,"[150, 160) | [16, 24) | [80, 90)",836.6666666666666
26
+ B025,B025,"W[150,160) P[8,16) E[50,60)",n 3 CV 2.8%,0,,,,,,3,2.8386354538174534,"[150, 160)","[8, 16)","[50, 60)",y16,"[150, 160) | [8, 16) | [50, 60)",733.3333333333334
27
+ B026,B026,"W[160,170) P[16,24) E[80,90)",n 3 CV 9.3%,0,,,,,,3,9.25244535041673,"[160, 170)","[16, 24)","[80, 90)",y16,"[160, 170) | [16, 24) | [80, 90)",796.6666666666666
28
+ B027,B027,"W[160,170) P[8,16) E[50,60)",n 3 CV 2.2%,0,,,,,,3,2.2224192165118857,"[160, 170)","[8, 16)","[50, 60)",y16,"[160, 170) | [8, 16) | [50, 60)",936.6666666666666
29
+ B028,B028,"W[170,180) P[8,16) E[60,70)",n 3 CV 2.9%,0,,,,,,3,2.9149939904520266,"[170, 180)","[8, 16)","[60, 70)",y16,"[170, 180) | [8, 16) | [60, 70)",863.3333333333334
30
+ B029,B029,"W[170,180) P[8,16) E[90,100)",n 3 CV 9.7%,0,,,,,,3,9.689794727658056,"[170, 180)","[8, 16)","[90, 100)",y16,"[170, 180) | [8, 16) | [90, 100)",953.3333333333334
31
+ B030,B030,"W[180,190) P[16,24) E[60,70)",n 3 CV 14.6%,0,,,,,,3,14.606741573033707,"[180, 190)","[16, 24)","[60, 70)",y16,"[180, 190) | [16, 24) | [60, 70)",890.0
32
+ B031,B031,"W[190,200) P[8,16) E[100,110)",n 3 CV 9.3%,0,,,,,,3,9.310909692745154,"[190, 200)","[8, 16)","[100, 110)",y16,"[190, 200) | [8, 16) | [100, 110)",1090.0
33
+ B032,B032,"W[190,200) P[8,16) E[80,90)",n 3 CV 8.4%,0,,,,,,3,8.358634967049253,"[190, 200)","[8, 16)","[80, 90)",y16,"[190, 200) | [8, 16) | [80, 90)",1003.3333333333334
34
+ B033,B033,"W[210,220) P[8,16) E[100,110)",n 3 CV 7.3%,0,,,,,,3,7.335128644553427,"[210, 220)","[8, 16)","[100, 110)",y16,"[210, 220) | [8, 16) | [100, 110)",1143.3333333333333
35
+ B034,B034,"W[110,120) P[8,16) E[60,70)",n 2 CV 7.3%,0,,,,,,2,7.252377242938949,"[110, 120)","[8, 16)","[60, 70)",y16,"[110, 120) | [8, 16) | [60, 70)",780.0
36
+ B035,B035,"W[120,130) P[8,16) E[40,50)",n 2 CV 7.2%,0,,,,,,2,7.190916418846245,"[120, 130)","[8, 16)","[40, 50)",y16,"[120, 130) | [8, 16) | [40, 50)",590.0
37
+ B036,B036,"W[130,140) P[16,24) E[60,70)",n 2 CV 4.9%,0,,,,,,2,4.876598490941707,"[130, 140)","[16, 24)","[60, 70)",y16,"[130, 140) | [16, 24) | [60, 70)",580.0
38
+ B037,B037,"W[130,140) P[8,16) E[50,60)",n 2 CV 12.4%,0,,,,,,2,12.405382126079783,"[130, 140)","[8, 16)","[50, 60)",y16,"[130, 140) | [8, 16) | [50, 60)",570.0
39
+ B038,B038,"W[140,150) P[16,24) E[70,80)",n 2 CV 1.8%,0,,,,,,2,1.8130943107347373,"[140, 150)","[16, 24)","[70, 80)",y16,"[140, 150) | [16, 24) | [70, 80)",780.0
40
+ B039,B039,"W[140,150) P[8,16) E[70,80)",n 2 CV 6.0%,0,,,,,,2,5.975550263548288,"[140, 150)","[8, 16)","[70, 80)",y16,"[140, 150) | [8, 16) | [70, 80)",710.0
41
+ B040,B040,"W[160,170) P[0,8) E[60,70)",n 2 CV 14.7%,0,,,,,,2,14.731391274719742,"[160, 170)","[0, 8)","[60, 70)",y16,"[160, 170) | [0, 8) | [60, 70)",960.0
42
+ B041,B041,"W[160,170) P[8,16) E[90,100)",n 2 CV 1.5%,0,,,,,,2,1.5371886547533642,"[160, 170)","[8, 16)","[90, 100)",y16,"[160, 170) | [8, 16) | [90, 100)",920.0
43
+ B042,B042,"W[170,180) P[24,32) E[60,70)",n 2 CV 2.7%,0,,,,,,2,2.668327476175651,"[170, 180)","[24, 32)","[60, 70)",y16,"[170, 180) | [24, 32) | [60, 70)",795.0
44
+ B043,B043,"W[170,180) P[8,16) E[80,90)",n 2 CV 11.3%,0,,,,,,2,11.313708498984761,"[170, 180)","[8, 16)","[80, 90)",y16,"[170, 180) | [8, 16) | [80, 90)",1000.0
45
+ B044,B044,"W[180,190) P[0,8) E[90,100)",n 2 CV 11.4%,0,,,,,,2,11.43406710003779,"[180, 190)","[0, 8)","[90, 100)",y16,"[180, 190) | [0, 8) | [90, 100)",1175.0
46
+ B045,B045,"W[180,190) P[24,32) E[60,70)",n 2 CV 7.5%,0,,,,,,2,7.542472332656507,"[180, 190)","[24, 32)","[60, 70)",y16,"[180, 190) | [24, 32) | [60, 70)",750.0
47
+ B046,B046,"W[180,190) P[24,32) E[70,80)",n 2 CV 6.0%,0,,,,,,2,6.017930052651469,"[180, 190)","[24, 32)","[70, 80)",y16,"[180, 190) | [24, 32) | [70, 80)",940.0
48
+ B047,B047,"W[180,190) P[8,16) E[100,110)",n 2 CV 2.9%,0,,,,,,2,2.8569970957032225,"[180, 190)","[8, 16)","[100, 110)",y16,"[180, 190) | [8, 16) | [100, 110)",990.0
49
+ B048,B048,"W[180,190) P[8,16) E[90,100)",n 2 CV 8.9%,0,,,,,,2,8.931875130777442,"[180, 190)","[8, 16)","[90, 100)",y16,"[180, 190) | [8, 16) | [90, 100)",950.0
50
+ B049,B049,"W[190,200) P[8,16) E[90,100)",n 2 CV 4.0%,0,,,,,,2,4.002491214263476,"[190, 200)","[8, 16)","[90, 100)",y16,"[190, 200) | [8, 16) | [90, 100)",1060.0
51
+ B050,B050,"W[100,110) P[0,8) E[40,50)",n 1 CV —,0,,,,,,1,,"[100, 110)","[0, 8)","[40, 50)",y16,"[100, 110) | [0, 8) | [40, 50)",580.0
52
+ B051,B051,"W[100,110) P[8,16) E[50,60)",n 1 CV —,0,,,,,,1,,"[100, 110)","[8, 16)","[50, 60)",y16,"[100, 110) | [8, 16) | [50, 60)",650.0
53
+ B052,B052,"W[110,120) P[0,8) E[40,50)",n 1 CV —,0,,,,,,1,,"[110, 120)","[0, 8)","[40, 50)",y16,"[110, 120) | [0, 8) | [40, 50)",510.0
54
+ B053,B053,"W[110,120) P[8,16) E[40,50)",n 1 CV —,0,,,,,,1,,"[110, 120)","[8, 16)","[40, 50)",y16,"[110, 120) | [8, 16) | [40, 50)",720.0
55
+ B054,B054,"W[120,130) P[0,8) E[50,60)",n 1 CV —,0,,,,,,1,,"[120, 130)","[0, 8)","[50, 60)",y16,"[120, 130) | [0, 8) | [50, 60)",630.0
56
+ B055,B055,"W[120,130) P[16,24) E[50,60)",n 1 CV —,0,,,,,,1,,"[120, 130)","[16, 24)","[50, 60)",y16,"[120, 130) | [16, 24) | [50, 60)",700.0
57
+ B056,B056,"W[130,140) P[0,8) E[60,70)",n 1 CV —,0,,,,,,1,,"[130, 140)","[0, 8)","[60, 70)",y16,"[130, 140) | [0, 8) | [60, 70)",530.0
58
+ B057,B057,"W[130,140) P[8,16) E[40,50)",n 1 CV —,0,,,,,,1,,"[130, 140)","[8, 16)","[40, 50)",y16,"[130, 140) | [8, 16) | [40, 50)",630.0
59
+ B058,B058,"W[130,140) P[8,16) E[70,80)",n 1 CV —,0,,,,,,1,,"[130, 140)","[8, 16)","[70, 80)",y16,"[130, 140) | [8, 16) | [70, 80)",650.0
60
+ B059,B059,"W[140,150) P[16,24) E[60,70)",n 1 CV —,0,,,,,,1,,"[140, 150)","[16, 24)","[60, 70)",y16,"[140, 150) | [16, 24) | [60, 70)",750.0
61
+ B060,B060,"W[140,150) P[8,16) E[80,90)",n 1 CV —,0,,,,,,1,,"[140, 150)","[8, 16)","[80, 90)",y16,"[140, 150) | [8, 16) | [80, 90)",680.0
62
+ B061,B061,"W[150,160) P[0,8) E[60,70)",n 1 CV —,0,,,,,,1,,"[150, 160)","[0, 8)","[60, 70)",y16,"[150, 160) | [0, 8) | [60, 70)",760.0
63
+ B062,B062,"W[150,160) P[0,8) E[70,80)",n 1 CV —,0,,,,,,1,,"[150, 160)","[0, 8)","[70, 80)",y16,"[150, 160) | [0, 8) | [70, 80)",773.543758830446
64
+ B063,B063,"W[150,160) P[0,8) E[80,90)",n 1 CV —,0,,,,,,1,,"[150, 160)","[0, 8)","[80, 90)",y16,"[150, 160) | [0, 8) | [80, 90)",441.5759247750045
65
+ B064,B064,"W[150,160) P[16,24) E[70,80)",n 1 CV —,0,,,,,,1,,"[150, 160)","[16, 24)","[70, 80)",y16,"[150, 160) | [16, 24) | [70, 80)",820.0
66
+ B065,B065,"W[150,160) P[24,32) E[50,60)",n 1 CV —,0,,,,,,1,,"[150, 160)","[24, 32)","[50, 60)",y16,"[150, 160) | [24, 32) | [50, 60)",670.0
67
+ B066,B066,"W[150,160) P[24,32) E[60,70)",n 1 CV —,0,,,,,,1,,"[150, 160)","[24, 32)","[60, 70)",y16,"[150, 160) | [24, 32) | [60, 70)",700.0
68
+ B067,B067,"W[150,160) P[8,16) E[100,110)",n 1 CV —,0,,,,,,1,,"[150, 160)","[8, 16)","[100, 110)",y16,"[150, 160) | [8, 16) | [100, 110)",850.0
69
+ B068,B068,"W[160,170) P[0,8) E[100,110)",n 1 CV —,0,,,,,,1,,"[160, 170)","[0, 8)","[100, 110)",y16,"[160, 170) | [0, 8) | [100, 110)",950.0
70
+ B069,B069,"W[160,170) P[16,24) E[50,60)",n 1 CV —,0,,,,,,1,,"[160, 170)","[16, 24)","[50, 60)",y16,"[160, 170) | [16, 24) | [50, 60)",810.0
71
+ B070,B070,"W[160,170) P[16,24) E[90,100)",n 1 CV —,0,,,,,,1,,"[160, 170)","[16, 24)","[90, 100)",y16,"[160, 170) | [16, 24) | [90, 100)",780.0
72
+ B071,B071,"W[160,170) P[24,32) E[50,60)",n 1 CV —,0,,,,,,1,,"[160, 170)","[24, 32)","[50, 60)",y16,"[160, 170) | [24, 32) | [50, 60)",740.0
73
+ B072,B072,"W[160,170) P[24,32) E[70,80)",n 1 CV —,0,,,,,,1,,"[160, 170)","[24, 32)","[70, 80)",y16,"[160, 170) | [24, 32) | [70, 80)",810.0
74
+ B073,B073,"W[160,170) P[8,16) E[100,110)",n 1 CV —,0,,,,,,1,,"[160, 170)","[8, 16)","[100, 110)",y16,"[160, 170) | [8, 16) | [100, 110)",960.0
75
+ B074,B074,"W[170,180) P[0,8) E[100,110)",n 1 CV —,0,,,,,,1,,"[170, 180)","[0, 8)","[100, 110)",y16,"[170, 180) | [0, 8) | [100, 110)",850.0
76
+ B075,B075,"W[170,180) P[16,24) E[50,60)",n 1 CV —,0,,,,,,1,,"[170, 180)","[16, 24)","[50, 60)",y16,"[170, 180) | [16, 24) | [50, 60)",900.0
77
+ B076,B076,"W[170,180) P[16,24) E[90,100)",n 1 CV —,0,,,,,,1,,"[170, 180)","[16, 24)","[90, 100)",y16,"[170, 180) | [16, 24) | [90, 100)",880.0
78
+ B077,B077,"W[170,180) P[24,32) E[70,80)",n 1 CV —,0,,,,,,1,,"[170, 180)","[24, 32)","[70, 80)",y16,"[170, 180) | [24, 32) | [70, 80)",701.2549765309261
79
+ B078,B078,"W[170,180) P[24,32) E[80,90)",n 1 CV —,0,,,,,,1,,"[170, 180)","[24, 32)","[80, 90)",y16,"[170, 180) | [24, 32) | [80, 90)",820.0
80
+ B079,B079,"W[170,180) P[32,40] E[60,70)",n 1 CV —,0,,,,,,1,,"[170, 180)","[32, 40]","[60, 70)",y16,"[170, 180) | [32, 40] | [60, 70)",830.0
81
+ B080,B080,"W[170,180) P[8,16) E[100,110)",n 1 CV —,0,,,,,,1,,"[170, 180)","[8, 16)","[100, 110)",y16,"[170, 180) | [8, 16) | [100, 110)",810.0
82
+ B081,B081,"W[170,180) P[8,16) E[110,120)",n 1 CV —,0,,,,,,1,,"[170, 180)","[8, 16)","[110, 120)",y16,"[170, 180) | [8, 16) | [110, 120)",970.0
83
+ B082,B082,"W[180,190) P[16,24) E[100,110)",n 1 CV —,0,,,,,,1,,"[180, 190)","[16, 24)","[100, 110)",y16,"[180, 190) | [16, 24) | [100, 110)",1090.0
84
+ B083,B083,"W[180,190) P[16,24) E[70,80)",n 1 CV —,0,,,,,,1,,"[180, 190)","[16, 24)","[70, 80)",y16,"[180, 190) | [16, 24) | [70, 80)",907.3383471852242
85
+ B084,B084,"W[180,190) P[16,24) E[80,90)",n 1 CV —,0,,,,,,1,,"[180, 190)","[16, 24)","[80, 90)",y16,"[180, 190) | [16, 24) | [80, 90)",930.0
86
+ B085,B085,"W[180,190) P[32,40] E[70,80)",n 1 CV —,0,,,,,,1,,"[180, 190)","[32, 40]","[70, 80)",y16,"[180, 190) | [32, 40] | [70, 80)",870.0
87
+ B086,B086,"W[180,190) P[8,16) E[50,60)",n 1 CV —,0,,,,,,1,,"[180, 190)","[8, 16)","[50, 60)",y16,"[180, 190) | [8, 16) | [50, 60)",860.0
88
+ B087,B087,"W[180,190) P[8,16) E[60,70)",n 1 CV —,0,,,,,,1,,"[180, 190)","[8, 16)","[60, 70)",y16,"[180, 190) | [8, 16) | [60, 70)",880.0
89
+ B088,B088,"W[190,200) P[16,24) E[100,110)",n 1 CV —,0,,,,,,1,,"[190, 200)","[16, 24)","[100, 110)",y16,"[190, 200) | [16, 24) | [100, 110)",880.0
90
+ B089,B089,"W[190,200) P[16,24) E[110,120)",n 1 CV —,0,,,,,,1,,"[190, 200)","[16, 24)","[110, 120)",y16,"[190, 200) | [16, 24) | [110, 120)",1150.0
91
+ B090,B090,"W[190,200) P[16,24) E[90,100)",n 1 CV —,0,,,,,,1,,"[190, 200)","[16, 24)","[90, 100)",y16,"[190, 200) | [16, 24) | [90, 100)",980.0
92
+ B091,B091,"W[190,200) P[24,32) E[80,90)",n 1 CV —,0,,,,,,1,,"[190, 200)","[24, 32)","[80, 90)",y16,"[190, 200) | [24, 32) | [80, 90)",900.0
93
+ B092,B092,"W[190,200) P[8,16) E[120,130]",n 1 CV —,0,,,,,,1,,"[190, 200)","[8, 16)","[120, 130]",y16,"[190, 200) | [8, 16) | [120, 130]",990.0
94
+ B093,B093,"W[190,200) P[8,16) E[70,80)",n 1 CV —,0,,,,,,1,,"[190, 200)","[8, 16)","[70, 80)",y16,"[190, 200) | [8, 16) | [70, 80)",780.0
95
+ B094,B094,"W[200,210) P[0,8) E[110,120)",n 1 CV —,0,,,,,,1,,"[200, 210)","[0, 8)","[110, 120)",y16,"[200, 210) | [0, 8) | [110, 120)",1290.0
96
+ B095,B095,"W[200,210) P[16,24) E[80,90)",n 1 CV —,0,,,,,,1,,"[200, 210)","[16, 24)","[80, 90)",y16,"[200, 210) | [16, 24) | [80, 90)",1228.4976127923678
97
+ B096,B096,"W[200,210) P[8,16) E[100,110)",n 1 CV —,0,,,,,,1,,"[200, 210)","[8, 16)","[100, 110)",y16,"[200, 210) | [8, 16) | [100, 110)",990.0
98
+ B097,B097,"W[210,220) P[16,24) E[110,120)",n 1 CV —,0,,,,,,1,,"[210, 220)","[16, 24)","[110, 120)",y16,"[210, 220) | [16, 24) | [110, 120)",1160.0
@@ -0,0 +1,3 @@
1
+ row,label,estimate,lower,upper
2
+ 001,Study A,0.8,0.6,1.0
3
+ 002,Study B,1.1,0.9,1.3
@@ -0,0 +1,5 @@
1
+ row,id,x,class
2
+ 01,001,-2,normal
3
+ 01,002,0,normal
4
+ 01,003,7,outlier
5
+ 02,004,1,singleton
@@ -0,0 +1,7 @@
1
+ row,id,estimate,lower,upper,class,stats
2
+ 01,a,0.611,0.608,0.614,cohort_a,0.611 ± 0.003
3
+ 01,b,0.613,0.608,0.618,cohort_b,0.613 ± 0.005
4
+ 01,r,0.616,0.611,0.621,repeat,0.616 ± 0.005
5
+ 02,a,0.621,0.618,0.624,cohort_a,0.621 ± 0.003
6
+ 02,b,0.623,0.618,0.628,cohort_b,0.623 ± 0.005
7
+ 02,r,0.626,0.621,0.631,repeat,0.626 ± 0.005
@@ -0,0 +1,3 @@
1
+ row,label,N
2
+ 01,$S_1$,3
3
+ 02,$S_2$,4
@@ -0,0 +1,21 @@
1
+ row,id,x,class
2
+ 01,001,0.605,cohort_a
3
+ 01,002,0.608,cohort_a
4
+ 01,003,0.610,cohort_a
5
+ 01,004,0.611,cohort_a
6
+ 01,005,0.612,cohort_a
7
+ 01,006,0.613,cohort_a
8
+ 01,007,0.614,cohort_a
9
+ 01,008,0.616,cohort_a
10
+ 01,009,0.618,cohort_a
11
+ 01,010,0.620,cohort_a
12
+ 02,001,0.615,cohort_a
13
+ 02,002,0.618,cohort_a
14
+ 02,003,0.620,cohort_a
15
+ 02,004,0.621,cohort_a
16
+ 02,005,0.622,cohort_a
17
+ 02,006,0.623,cohort_a
18
+ 02,007,0.624,cohort_a
19
+ 02,008,0.626,cohort_a
20
+ 02,009,0.628,cohort_a
21
+ 02,010,0.630,cohort_a
@@ -0,0 +1,3 @@
1
+ row,label,N,stats,lower,q1,median,q3,upper
2
+ 01,$S_1$,3,"0.612 [0.610,0.614]",0.605,0.610,0.612,0.614,0.620
3
+ 02,$S_2$,4,"0.622 [0.620,0.624]",0.615,0.620,0.622,0.624,0.630
@@ -0,0 +1,21 @@
1
+ version: '0.3'
2
+ DataSet:
3
+ - name: rows
4
+ path: ./data/interval.csv
5
+ type: csv
6
+ Figures:
7
+ - name: forest-interval
8
+ type: forest
9
+ data: rows
10
+ glyph: interval
11
+ title:
12
+ text: Generic interval comparison
13
+ x:
14
+ label: Supplied coordinates
15
+ reference: 0
16
+ output:
17
+ dir: ../../Workshop/forest_native
18
+ formats:
19
+ - png
20
+ - svg
21
+ dpi: 220
@@ -0,0 +1,52 @@
1
+ # No primary glyph coordinates or points; every row displays three supplied intervals.
2
+ DataSet:
3
+ - {name: rows, path: ./data/summary-labels.csv, type: csv}
4
+ - {name: intervals, path: ./data/summary-intervals.csv, type: csv}
5
+ Figures:
6
+ - name: forest-intervals-only
7
+ type: forest
8
+ data: rows
9
+ intervals: intervals
10
+ title: {text: Supplied intervals only, fontsize: 7}
11
+ header_note: {text: 'MC entries supplied by the caller', fontsize: 4.3}
12
+ columns:
13
+ - {field: label, label: Input set, role: row_name, math: true}
14
+ - {field: N, label: N inputs, role: left}
15
+ x:
16
+ label: Supplied coordinate
17
+ lim: [0.60, 0.66]
18
+ ticks: [0.60, 0.61, 0.62, 0.63, 0.64, 0.65, 0.66]
19
+ description:
20
+ text: |
21
+ Supplied summaries.
22
+ SD is not a CI.
23
+
24
+ Example cut:
25
+ $p_T > 25\,\mathrm{GeV}$
26
+ fontsize: 4.3
27
+ math: true
28
+ frame: {axlogo: false}
29
+ forest:
30
+ legend_math: true
31
+ typography: {family: DejaVu Sans}
32
+ geometry:
33
+ footer_mm: 32
34
+ point_band_mm: 7
35
+ row_band_mm: 10
36
+ row_pitch_mm: 10.3
37
+ plot_y_mm: 6
38
+ cell_y_mm: 1.2
39
+ value_column_mm: 0
40
+ legend_start_columns: [2, 6]
41
+ description_start_column: 9
42
+ description_columns: 4
43
+ axis: {tick_suffix: ''}
44
+ grid: {show: true, divisions: 4, alpha: 0.12}
45
+ overlays:
46
+ legend: {label: '$\mathrm{mean}\pm\mathrm{SD}$', color: '#000000'}
47
+ annotation: {field: stats, fontsize: 4.3, gap_mm: 0.5}
48
+ classes:
49
+ cohort_a: {label: A, color: '#0072B2', offset_mm: -1.6}
50
+ cohort_b: {label: B, color: '#D55E00', alpha: 0.6, linestyle: '--', offset_mm: 0}
51
+ repeat: {label: Repeat, color: '#009E73', marker: x, offset_mm: 1.6}
52
+ output: {dir: /tmp/jarvisplot-forest-examples, formats: [png, pdf], dpi: 220}