Class: Panel

One cell of the figure. kind selects grammar (cartesian/heatmap) vs escape-hatch (image/custom); every kind shares the label, placeholder, legend and annotation machinery. Reuses label (human title).

URI: tvbo:class/Panel

 classDiagram
    class Panel
    click Panel href "./Panel.html"
      Panel : annotations
        
          
    
        
        
        Panel --> "*" Annotation : annotations
        click Annotation href "./Annotation.html"
    

        
      Panel : aspect
        
          
    
        
        
        Panel --> "0..1" String : aspect
        click String href "../http://www.w3.org/2001/XMLSchema#string.html"
    

        
      Panel : box_aspect
        
          
    
        
        
        Panel --> "0..1" Float : box_aspect
        click Float href "../http://www.w3.org/2001/XMLSchema#float.html"
    

        
      Panel : camera
        
          
    
        
        
        Panel --> "0..1" Camera : camera
        click Camera href "./Camera.html"
    

        
      Panel : capture
        
          
    
        
        
        Panel --> "0..1" RenderSpec : capture
        click RenderSpec href "./RenderSpec.html"
    

        
      Panel : cell
        
          
    
        
        
        Panel --> "0..1" Inset : cell
        click Inset href "./Inset.html"
    

        
      Panel : cells
        
          
    
        
        
        Panel --> "*" Inset : cells
        click Inset href "./Inset.html"
    

        
      Panel : colorbar
        
          
    
        
        
        Panel --> "0..1" Colorbar : colorbar
        click Colorbar href "./Colorbar.html"
    

        
      Panel : description
        
          
    
        
        
        Panel --> "0..1" String : description
        click String href "../http://www.w3.org/2001/XMLSchema#string.html"
    

        
      Panel : fill_cell
        
          
    
        
        
        Panel --> "0..1" Boolean : fill_cell
        click Boolean href "../http://www.w3.org/2001/XMLSchema#boolean.html"
    

        
      Panel : frame
        
          
    
        
        
        Panel --> "0..1" Boolean : frame
        click Boolean href "../http://www.w3.org/2001/XMLSchema#boolean.html"
    

        
      Panel : grid
        
          
    
        
        
        Panel --> "0..1" Grid : grid
        click Grid href "./Grid.html"
    

        
      Panel : hide_xticklabels
        
          
    
        
        
        Panel --> "0..1" Boolean : hide_xticklabels
        click Boolean href "../http://www.w3.org/2001/XMLSchema#boolean.html"
    

        
      Panel : hide_yticklabels
        
          
    
        
        
        Panel --> "0..1" Boolean : hide_yticklabels
        click Boolean href "../http://www.w3.org/2001/XMLSchema#boolean.html"
    

        
      Panel : insets
        
          
    
        
        
        Panel --> "*" Inset : insets
        click Inset href "./Inset.html"
    

        
      Panel : invert_x
        
          
    
        
        
        Panel --> "0..1" Boolean : invert_x
        click Boolean href "../http://www.w3.org/2001/XMLSchema#boolean.html"
    

        
      Panel : invert_y
        
          
    
        
        
        Panel --> "0..1" Boolean : invert_y
        click Boolean href "../http://www.w3.org/2001/XMLSchema#boolean.html"
    

        
      Panel : invert_z
        
          
    
        
        
        Panel --> "0..1" Boolean : invert_z
        click Boolean href "../http://www.w3.org/2001/XMLSchema#boolean.html"
    

        
      Panel : kind
        
          
    
        
        
        Panel --> "1" PanelKind : kind
        click PanelKind href "../../enums/PanelKind.html"
    

        
      Panel : label
        
          
    
        
        
        Panel --> "0..1" String : label
        click String href "../http://www.w3.org/2001/XMLSchema#string.html"
    

        
      Panel : layers
        
          
    
        
        
        Panel --> "*" Layer : layers
        click Layer href "./Layer.html"
    

        
      Panel : legend
        
          
    
        
        
        Panel --> "0..1" Legend : legend
        click Legend href "./Legend.html"
    

        
      Panel : nbins
        
          
    
        
        
        Panel --> "0..1" Integer : nbins
        click Integer href "../http://www.w3.org/2001/XMLSchema#integer.html"
    

        
      Panel : network
        
          
    
        
        
        Panel --> "0..1" Graph : network
        click Graph href "./Graph.html"
    

        
      Panel : number
        
          
    
        
        
        Panel --> "0..1" String : number
        click String href "../http://www.w3.org/2001/XMLSchema#string.html"
    

        
      Panel : number_loc
        
          
    
        
        
        Panel --> "0..1" Corner : number_loc
        click Corner href "../../enums/Corner.html"
    

        
      Panel : opts
        
          
    
        
        
        Panel --> "*" Argument : opts
        click Argument href "./Argument.html"
    

        
      Panel : panel_key
        
          
    
        
        
        Panel --> "1" String : panel_key
        click String href "../http://www.w3.org/2001/XMLSchema#string.html"
    

        
      Panel : path
        
          
    
        
        
        Panel --> "0..1" String : path
        click String href "../http://www.w3.org/2001/XMLSchema#string.html"
    

        
      Panel : placeholder
        
          
    
        
        
        Panel --> "0..1" String : placeholder
        click String href "../http://www.w3.org/2001/XMLSchema#string.html"
    

        
      Panel : regions
        
          
    
        
        
        Panel --> "*" Region : regions
        click Region href "./Region.html"
    

        
      Panel : render
        
          
    
        
        
        Panel --> "0..1" String : render
        click String href "../http://www.w3.org/2001/XMLSchema#string.html"
    

        
      Panel : rules
        
          
    
        
        
        Panel --> "*" Rule : rules
        click Rule href "./Rule.html"
    

        
      Panel : source
        
          
    
        
        
        Panel --> "0..1" String : source
        click String href "../http://www.w3.org/2001/XMLSchema#string.html"
    

        
      Panel : surface
        
          
    
        
        
        Panel --> "0..1" Surface : surface
        click Surface href "./Surface.html"
    

        
      Panel : tick_length
        
          
    
        
        
        Panel --> "0..1" Float : tick_length
        click Float href "../http://www.w3.org/2001/XMLSchema#float.html"
    

        
      Panel : tick_prune
        
          
    
        
        
        Panel --> "0..1" TickPrune : tick_prune
        click TickPrune href "../../enums/TickPrune.html"
    

        
      Panel : tick_size
        
          
    
        
        
        Panel --> "0..1" Float : tick_size
        click Float href "../http://www.w3.org/2001/XMLSchema#float.html"
    

        
      Panel : title
        
          
    
        
        
        Panel --> "0..1" String : title
        click String href "../http://www.w3.org/2001/XMLSchema#string.html"
    

        
      Panel : triangle_gap
        
          
    
        
        
        Panel --> "0..1" Integer : triangle_gap
        click Integer href "../http://www.w3.org/2001/XMLSchema#integer.html"
    

        
      Panel : volume
        
          
    
        
        
        Panel --> "0..1" Volume : volume
        click Volume href "./Volume.html"
    

        
      Panel : xlabel
        
          
    
        
        
        Panel --> "0..1" String : xlabel
        click String href "../http://www.w3.org/2001/XMLSchema#string.html"
    

        
      Panel : xlabel_pad
        
          
    
        
        
        Panel --> "0..1" Float : xlabel_pad
        click Float href "../http://www.w3.org/2001/XMLSchema#float.html"
    

        
      Panel : xlabel_side
        
          
    
        
        
        Panel --> "0..1" AxisSide : xlabel_side
        click AxisSide href "../../enums/AxisSide.html"
    

        
      Panel : xlim
        
          
    
        
        
        Panel --> "*" Float : xlim
        click Float href "../http://www.w3.org/2001/XMLSchema#float.html"
    

        
      Panel : xscale
        
          
    
        
        
        Panel --> "0..1" AxisScale : xscale
        click AxisScale href "../../enums/AxisScale.html"
    

        
      Panel : xtick_format
        
          
    
        
        
        Panel --> "0..1" TickFormat : xtick_format
        click TickFormat href "../../enums/TickFormat.html"
    

        
      Panel : xtick_rotation
        
          
    
        
        
        Panel --> "0..1" Float : xtick_rotation
        click Float href "../http://www.w3.org/2001/XMLSchema#float.html"
    

        
      Panel : xtick_side
        
          
    
        
        
        Panel --> "0..1" AxisSide : xtick_side
        click AxisSide href "../../enums/AxisSide.html"
    

        
      Panel : xticks
        
          
    
        
        
        Panel --> "*" Float : xticks
        click Float href "../http://www.w3.org/2001/XMLSchema#float.html"
    

        
      Panel : ylabel
        
          
    
        
        
        Panel --> "0..1" String : ylabel
        click String href "../http://www.w3.org/2001/XMLSchema#string.html"
    

        
      Panel : ylabel_pad
        
          
    
        
        
        Panel --> "0..1" Float : ylabel_pad
        click Float href "../http://www.w3.org/2001/XMLSchema#float.html"
    

        
      Panel : ylabel_side
        
          
    
        
        
        Panel --> "0..1" AxisSide : ylabel_side
        click AxisSide href "../../enums/AxisSide.html"
    

        
      Panel : ylim
        
          
    
        
        
        Panel --> "*" Float : ylim
        click Float href "../http://www.w3.org/2001/XMLSchema#float.html"
    

        
      Panel : yscale
        
          
    
        
        
        Panel --> "0..1" AxisScale : yscale
        click AxisScale href "../../enums/AxisScale.html"
    

        
      Panel : ytick_format
        
          
    
        
        
        Panel --> "0..1" TickFormat : ytick_format
        click TickFormat href "../../enums/TickFormat.html"
    

        
      Panel : ytick_rotation
        
          
    
        
        
        Panel --> "0..1" Float : ytick_rotation
        click Float href "../http://www.w3.org/2001/XMLSchema#float.html"
    

        
      Panel : ytick_side
        
          
    
        
        
        Panel --> "0..1" AxisSide : ytick_side
        click AxisSide href "../../enums/AxisSide.html"
    

        
      Panel : yticks
        
          
    
        
        
        Panel --> "*" Float : yticks
        click Float href "../http://www.w3.org/2001/XMLSchema#float.html"
    

        
      Panel : zlabel
        
          
    
        
        
        Panel --> "0..1" String : zlabel
        click String href "../http://www.w3.org/2001/XMLSchema#string.html"
    

        
      Panel : zlabel_pad
        
          
    
        
        
        Panel --> "0..1" Float : zlabel_pad
        click Float href "../http://www.w3.org/2001/XMLSchema#float.html"
    

        
      Panel : zlim
        
          
    
        
        
        Panel --> "*" Float : zlim
        click Float href "../http://www.w3.org/2001/XMLSchema#float.html"
    

        
      

Slots

Name Cardinality and Range Description Inheritance
label 0..1
xsd:string
direct
description 0..1
xsd:string
The authored interpretive clause for this panel — the one part of its caption… direct
cell 0..1
Inset
What every cell of a grid is: the kind they all draw, and the opts they sha… direct
cells *
Inset
A grid’s cells stated one at a time, for a grid whose cells differ — a firs… direct
source 0..1
xsd:string
For an image panel, the producing artifact its committed path is rendered… direct
capture 0..1
RenderSpec
How to turn an image panel’s HTML/URL source into its path: the headles… direct
panel_key 1
xsd:string
Mosaic label this panel binds to (matches a letter in Figure direct
kind 1
PanelKind
direct
number_loc 0..1
Corner
Per-panel override of the figure’s panel_number_loc — e direct
number 0..1
xsd:string
The panel letter to draw, overriding the mosaic key, or the string ‘false’ to… direct
placeholder 0..1
xsd:string
Honest-placeholder text drawn when this panel’s data is missing or degenerate… direct
layers *
Layer
Marks sharing this panel’s axes (overlay) direct
path 0..1
xsd:string
External image file (image kind) direct
render 0..1
xsd:string
Name of a registered custom-panel callable fn(container, ax, **opts) (custom … direct
opts *
Argument
The keyword options of a custom callable, and of the kinds that carry their… direct
tick_size 0..1
xsd:float
Tick-label size in points, overriding the figure’s font_size for this panel… direct
tick_length 0..1
xsd:float
Length of this panel’s tick marks in points, overriding the theme’s direct
tick_prune 0..1
TickPrune
Drop the first, last, or both end ticks, for the case where a corner tick col… direct
nbins 0..1
xsd:integer
Upper bound on the number of ticks per axis direct
xticks *
xsd:float
The x tick positions, stated outright direct
yticks *
xsd:float
The y tick positions, stated outright direct
hide_xticklabels 0..1
xsd:boolean
Draw the x ticks without their numbers direct
hide_yticklabels 0..1
xsd:boolean
Draw the y ticks without their numbers direct
xtick_rotation 0..1
xsd:float
Rotate the x tick labels, in degrees counter-clockwise direct
ytick_rotation 0..1
xsd:float
Rotate the y tick labels, in degrees counter-clockwise direct
xtick_format 0..1
TickFormat
How x tick numbers are written: sci forces scientific notation, plain for… direct
ytick_format 0..1
TickFormat
How y tick numbers are written direct
xtick_side 0..1
AxisSide
Which edge the x ticks sit on direct
ytick_side 0..1
AxisSide
Which edge the y ticks sit on direct
xlabel 0..1
xsd:string
The x axis label, as the figure prints it — unit included, LaTeX included direct
ylabel 0..1
xsd:string
The y axis label direct
zlabel 0..1
xsd:string
The depth axis label of a 3-D panel direct
title 0..1
xsd:string
A heading above the panel, in the panel’s own words direct
xlabel_pad 0..1
xsd:float
Gap in points between the x axis label and its tick numbers, for where the de… direct
ylabel_pad 0..1
xsd:float
Gap in points between the y axis label and its tick numbers direct
zlabel_pad 0..1
xsd:float
Gap in points between the z axis label and its tick numbers direct
xlabel_side 0..1
AxisSide
Which edge the x axis LABEL sits on direct
ylabel_side 0..1
AxisSide
Which edge the y axis LABEL sits on direct
xlim *
xsd:float
The x range, [min, max] direct
ylim *
xsd:float
The y range, [min, max] direct
zlim *
xsd:float
The depth range of a 3-D panel, [min, max] direct
xscale 0..1
AxisScale
How the x axis maps values to distance direct
yscale 0..1
AxisScale
How the y axis maps values to distance direct
aspect 0..1
xsd:string or 
xsd:float
The DATA aspect ratio: equal — one unit of x is one unit of y, what a matri… direct
box_aspect 0..1
xsd:float
The frame’s height over its width, independent of the data ranges: a square p… direct
invert_x 0..1
xsd:boolean
Draw the x axis descending direct
invert_y 0..1
xsd:boolean
Draw the y axis descending — the matrix convention, row 0 at the top direct
invert_z 0..1
xsd:boolean
Draw the depth axis of a 3-D panel descending direct
frame 0..1
xsd:boolean
Whether the panel keeps its frame and its ticks direct
legend 0..1
Legend or 
xsd:boolean or 
xsd:string
A key for this panel’s own marks direct
colorbar 0..1
Colorbar
The colour scale printed beside this panel’s field direct
surface 0..1
Surface
Geometry and colour scale of a kind: surface panel direct
volume 0..1
Volume
Geometry and colour scale of a kind: volume panel direct
network 0..1
Graph
Graph and colour scale of a kind: network panel direct
grid 0..1
Grid
How a kind: grid panel tiles its cells direct
fill_cell 0..1
xsd:boolean
Keep the position the layout engine gave this panel, rather than letting a la… direct
triangle_gap 0..1
xsd:integer
Cells of blank left along the diagonal between two triangle layers, so the … direct
rules *
Rule
Straight reference lines drawn across the panel: a zero, a threshold, the ide… direct
regions *
Region
Rectangles ringing the windows this panel calls out — the parameter band a re… direct
camera 0..1
Camera
Viewpoint for a 3-D panel or a surface direct
annotations *
Annotation
Positioned text labels drawn on the panel (e direct
insets *
Inset
Sub-axes drawn inside this panel after its own body — the zoom windows, corne… direct

Usages

used by used in type used
Figure panels range Panel

Identifier and Mapping Information

Schema Source

  • from schema: https://w3id.org/tvbo/figure

Mappings

Mapping Type Mapped Value
self tvbo:Panel
native tvbo:Panel

LinkML Source

Direct

name: Panel
description: One cell of the figure. kind selects grammar (cartesian/heatmap) vs escape-hatch
  (image/custom); every kind shares the label, placeholder, legend and annotation
  machinery. Reuses label (human title).
from_schema: https://w3id.org/tvbo/figure
slots:
- label
- description
- cell
- cells
- source
- capture
slot_usage:
  description:
    name: description
    description: The authored interpretive clause for this panel — the one part of
      its caption a human writes. The caption composer merges it with the structural
      descriptor it derives from the panel's layers (axis quantities/units, model/experiment,
      transform), so the sentence a reader sees is authored intent over computed fact
      and cannot drift when panels move or layers change.
  source:
    name: source
    description: 'For an `image` panel, the producing artifact its committed `path`
      is rendered FROM: a committed HTML/SVG file, a producing script, or a URL. `path`
      stays the placed output; `source` is what regenerates it deterministically,
      so a schematic or a live-platform view is provenance-tracked rather than an
      opaque binary pasted into the repo. Rendered through `capture:` when it is HTML/a
      URL; run as a script otherwise.'
attributes:
  panel_key:
    name: panel_key
    annotations:
      collection_key:
        tag: collection_key
        value: true
    description: Mosaic label this panel binds to (matches a letter in Figure.layout).
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    key: true
    domain_of:
    - Panel
    range: string
  kind:
    name: kind
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: PanelKind
    required: true
  number_loc:
    name: number_loc
    description: Per-panel override of the figure's panel_number_loc — e.g. wide top
      panels upper-right, grid panels upper-left.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    range: Corner
  number:
    name: number
    description: 'The panel letter to draw, overriding the mosaic key, or the string
      ''false'' to draw none. Needed whenever the paper''s panels do not map one-to-one
      onto mosaic cells: a row of five mode surfaces under a single (a), or a schematic
      cell that carries no letter of its own. Without it a grouped figure numbers
      every cell and its letters stop matching the paper''s.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    range: string
  placeholder:
    name: placeholder
    description: Honest-placeholder text drawn when this panel's data is missing or
      degenerate (never a source-replot). Setting it wraps the draw so a missing container
      falls back to this label instead of erroring.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    range: string
  layers:
    name: layers
    description: Marks sharing this panel's axes (overlay). Grammar kinds only.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: Layer
    multivalued: true
    inlined: true
    inlined_as_list: true
  path:
    name: path
    description: External image file (image kind).
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    - File
    - DataSource
    - CodeSource
    - ArchiveConfig
    range: string
  render:
    name: render
    description: Name of a registered custom-panel callable fn(container, ax, **opts)
      (custom kind).
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: string
  opts:
    name: opts
    description: 'The keyword options of a `custom` callable, and of the kinds that
      carry their own option family — a `surface`/`volume`/`network` panel''s geometry,
      a colorbar''s. No part of how an axis is DRAWN belongs here: the labels, limits,
      scales, shape and legend are slots on the panel itself, the tick family sits
      beside them, and `rules`, `regions` and `camera` carry the marks that travel
      with a colour. The renderer refuses a retired name here rather than passing
      it into the emitted script, and names the slot that replaced it.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    - Style
    range: Argument
    multivalued: true
    inlined: true
  tick_size:
    name: tick_size
    description: Tick-label size in points, overriding the figure's `font_size` for
      this panel's ticks alone.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: float
  tick_length:
    name: tick_length
    description: Length of this panel's tick marks in points, overriding the theme's.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    - Theme
    range: float
  tick_prune:
    name: tick_prune
    description: Drop the first, last, or both end ticks, for the case where a corner
      tick collides with its neighbour panel's.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: TickPrune
  nbins:
    name: nbins
    description: Upper bound on the number of ticks per axis. The lever to reach for
      when a dense mosaic runs its numbers together.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: integer
  xticks:
    name: xticks
    description: The x tick positions, stated outright. Unset lets the locator choose
      them.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: float
    multivalued: true
  yticks:
    name: yticks
    description: The y tick positions, stated outright.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: float
    multivalued: true
  hide_xticklabels:
    name: hide_xticklabels
    description: 'Draw the x ticks without their numbers. Declare `share_x` on the
      figure alongside it: hiding the numbers alone asserts a shared scale the axes
      may not have, and a reader then compares two panels drawn at different ranges.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: boolean
  hide_yticklabels:
    name: hide_yticklabels
    description: Draw the y ticks without their numbers. Same rule as `hide_xticklabels`,
      with `share_y`.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: boolean
  xtick_rotation:
    name: xtick_rotation
    description: 'Rotate the x tick labels, in degrees counter-clockwise. Worth reaching
      for when a dense row would otherwise run its numbers together: a slanted label
      is anchored at its tick rather than centred under it, so it costs width it would
      otherwise steal from its neighbour.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: float
  ytick_rotation:
    name: ytick_rotation
    description: Rotate the y tick labels, in degrees counter-clockwise.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: float
  xtick_format:
    name: xtick_format
    description: 'How x tick numbers are written: `sci` forces scientific notation,
      `plain` forbids it.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: TickFormat
  ytick_format:
    name: ytick_format
    description: How y tick numbers are written.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: TickFormat
  xtick_side:
    name: xtick_side
    description: Which edge the x ticks sit on.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: AxisSide
  ytick_side:
    name: ytick_side
    description: Which edge the y ticks sit on.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: AxisSide
  xlabel:
    name: xlabel
    description: 'The x axis label, as the figure prints it — unit included, LaTeX
      included. Unset leaves the renderer''s own, which is the encoded field''s bare
      name: right for a working figure, wrong for a printed one.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: string
  ylabel:
    name: ylabel
    description: The y axis label. See `xlabel`.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: string
  zlabel:
    name: zlabel
    description: The depth axis label of a 3-D panel. Ignored by every flat kind.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: string
  title:
    name: title
    description: A heading above the panel, in the panel's own words. A panel LETTER
      is not a title — that is `number`, which the layout places and sizes to the
      journal's convention.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    - Legend
    - Study
    range: string
  xlabel_pad:
    name: xlabel_pad
    description: Gap in points between the x axis label and its tick numbers, for
      where the default lets the two touch. Unset takes the theme's `label_pad`.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: float
  ylabel_pad:
    name: ylabel_pad
    description: Gap in points between the y axis label and its tick numbers. See
      `xlabel_pad`.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: float
  zlabel_pad:
    name: zlabel_pad
    description: Gap in points between the z axis label and its tick numbers. See
      `xlabel_pad`.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: float
  xlabel_side:
    name: xlabel_side
    description: Which edge the x axis LABEL sits on. The tick numbers stay where
      `xtick_side` puts them, so a label can cross to the far side of a panel whose
      ticks do not follow it.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: AxisSide
  ylabel_side:
    name: ylabel_side
    description: Which edge the y axis LABEL sits on. See `xlabel_side`.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: AxisSide
  xlim:
    name: xlim
    description: The x range, `[min, max]`. Declared rather than inferred, because
      two panels a figure asks the reader to compare must not end up on whatever ranges
      their own data happened to reach.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: float
    multivalued: true
  ylim:
    name: ylim
    description: The y range, `[min, max]`. See `xlim`.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: float
    multivalued: true
  zlim:
    name: zlim
    description: The depth range of a 3-D panel, `[min, max]`. Ignored by every flat
      kind.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: float
    multivalued: true
  xscale:
    name: xscale
    description: How the x axis maps values to distance.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: AxisScale
  yscale:
    name: yscale
    description: How the y axis maps values to distance.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: AxisScale
  aspect:
    name: aspect
    description: 'The DATA aspect ratio: `equal` — one unit of x is one unit of y,
      what a matrix or a spatial map needs — or `auto` to fill the cell, or a number.
      `box_aspect` shapes the frame instead.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    - Colorbar
    range: string
    any_of:
    - range: string
    - range: float
  box_aspect:
    name: box_aspect
    description: 'The frame''s height over its width, independent of the data ranges:
      a square panel over data that is not square. `aspect` constrains the data instead.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: float
  invert_x:
    name: invert_x
    description: Draw the x axis descending.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: boolean
  invert_y:
    name: invert_y
    description: Draw the y axis descending — the matrix convention, row 0 at the
      top.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: boolean
  invert_z:
    name: invert_z
    description: Draw the depth axis of a 3-D panel descending.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: boolean
  frame:
    name: frame
    description: 'Whether the panel keeps its frame and its ticks. `false` strips
      both, for a panel with no measurable axis: an image, a schematic, a connectivity
      matrix shown as a picture. Unset keeps them.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    - Layer
    - Legend
    range: boolean
  legend:
    name: legend
    description: 'A key for this panel''s own marks. `legend: true` draws it wherever
      the backend finds room, `legend: upper right` fixes the corner, and the object
      form states the rest — frame, columns, title. All three are one slot, so a panel
      that starts with a corner and later needs two columns keeps the word it had.
      Distinct from `kind: legend`, a standalone legend PANEL that occupies a cell
      of its own.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: Legend
    inlined: true
    any_of:
    - range: Legend
    - range: boolean
    - range: string
  colorbar:
    name: colorbar
    description: The colour scale printed beside this panel's field.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: Colorbar
    inlined: true
  surface:
    name: surface
    description: 'Geometry and colour scale of a `kind: surface` panel. Ignored by
      every other kind.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: Surface
    inlined: true
  volume:
    name: volume
    description: 'Geometry and colour scale of a `kind: volume` panel. Ignored by
      every other kind.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: Volume
    inlined: true
  network:
    name: network
    description: 'Graph and colour scale of a `kind: network` panel. Ignored by every
      other kind.'
    from_schema: https://w3id.org/tvbo/figure
    domain_of:
    - Subject
    - Session
    - Panel
    - Inset
    - SimulationExperiment
    range: Graph
    inlined: true
  grid:
    name: grid
    description: 'How a `kind: grid` panel tiles its cells. Ignored by every other
      kind.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: Grid
    inlined: true
  fill_cell:
    name: fill_cell
    description: Keep the position the layout engine gave this panel, rather than
      letting a later pass move it. For a panel whose position carries meaning — aligned
      with the one above it, or sized to match a sibling.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: boolean
  triangle_gap:
    name: triangle_gap
    description: Cells of blank left along the diagonal between two `triangle` layers,
      so the two halves of a split matrix read as two quantities rather than one image.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: integer
  rules:
    name: rules
    description: 'Straight reference lines drawn across the panel: a zero, a threshold,
      the identity line of a target-versus-simulated plot. Each carries its own colour
      and dash, so a rule and the way it is drawn cannot be stated apart.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: Rule
    multivalued: true
    inlined: true
    inlined_as_list: true
  regions:
    name: regions
    description: Rectangles ringing the windows this panel calls out — the parameter
      band a regime lives in, the interval a statistic was taken over.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    - Stimulus
    range: Region
    multivalued: true
    inlined: true
    inlined_as_list: true
  camera:
    name: camera
    description: Viewpoint for a 3-D panel or a surface. Ignored by every flat kind.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: Camera
    inlined: true
  annotations:
    name: annotations
    description: Positioned text labels drawn on the panel (e.g. 'K≈272') — a declarative
      alternative to a custom callable.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    - Inset
    range: Annotation
    multivalued: true
    inlined: true
    inlined_as_list: true
  insets:
    name: insets
    description: Sub-axes drawn inside this panel after its own body — the zoom windows,
      corner thumbnails and small key maps papers place over a plot. Declaring them
      keeps a panel that needs one from becoming a custom callable, which would take
      its whole interior out of the grammar.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    domain_of:
    - Panel
    range: Inset
    multivalued: true
    inlined: true
    inlined_as_list: true

Induced

name: Panel
description: One cell of the figure. kind selects grammar (cartesian/heatmap) vs escape-hatch
  (image/custom); every kind shares the label, placeholder, legend and annotation
  machinery. Reuses label (human title).
from_schema: https://w3id.org/tvbo/figure
slot_usage:
  description:
    name: description
    description: The authored interpretive clause for this panel — the one part of
      its caption a human writes. The caption composer merges it with the structural
      descriptor it derives from the panel's layers (axis quantities/units, model/experiment,
      transform), so the sentence a reader sees is authored intent over computed fact
      and cannot drift when panels move or layers change.
  source:
    name: source
    description: 'For an `image` panel, the producing artifact its committed `path`
      is rendered FROM: a committed HTML/SVG file, a producing script, or a URL. `path`
      stays the placed output; `source` is what regenerates it deterministically,
      so a schematic or a live-platform view is provenance-tracked rather than an
      opaque binary pasted into the repo. Rendered through `capture:` when it is HTML/a
      URL; run as a script otherwise.'
attributes:
  panel_key:
    name: panel_key
    annotations:
      collection_key:
        tag: collection_key
        value: true
    description: Mosaic label this panel binds to (matches a letter in Figure.layout).
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    key: true
    owner: Panel
    domain_of:
    - Panel
    range: string
    required: true
  kind:
    name: kind
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: PanelKind
    required: true
  number_loc:
    name: number_loc
    description: Per-panel override of the figure's panel_number_loc — e.g. wide top
      panels upper-right, grid panels upper-left.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    range: Corner
  number:
    name: number
    description: 'The panel letter to draw, overriding the mosaic key, or the string
      ''false'' to draw none. Needed whenever the paper''s panels do not map one-to-one
      onto mosaic cells: a row of five mode surfaces under a single (a), or a schematic
      cell that carries no letter of its own. Without it a grouped figure numbers
      every cell and its letters stop matching the paper''s.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    range: string
  placeholder:
    name: placeholder
    description: Honest-placeholder text drawn when this panel's data is missing or
      degenerate (never a source-replot). Setting it wraps the draw so a missing container
      falls back to this label instead of erroring.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    range: string
  layers:
    name: layers
    description: Marks sharing this panel's axes (overlay). Grammar kinds only.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: Layer
    multivalued: true
    inlined: true
    inlined_as_list: true
  path:
    name: path
    description: External image file (image kind).
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    - File
    - DataSource
    - CodeSource
    - ArchiveConfig
    range: string
  render:
    name: render
    description: Name of a registered custom-panel callable fn(container, ax, **opts)
      (custom kind).
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: string
  opts:
    name: opts
    description: 'The keyword options of a `custom` callable, and of the kinds that
      carry their own option family — a `surface`/`volume`/`network` panel''s geometry,
      a colorbar''s. No part of how an axis is DRAWN belongs here: the labels, limits,
      scales, shape and legend are slots on the panel itself, the tick family sits
      beside them, and `rules`, `regions` and `camera` carry the marks that travel
      with a colour. The renderer refuses a retired name here rather than passing
      it into the emitted script, and names the slot that replaced it.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    - Style
    range: Argument
    multivalued: true
    inlined: true
  tick_size:
    name: tick_size
    description: Tick-label size in points, overriding the figure's `font_size` for
      this panel's ticks alone.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: float
  tick_length:
    name: tick_length
    description: Length of this panel's tick marks in points, overriding the theme's.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    - Theme
    range: float
  tick_prune:
    name: tick_prune
    description: Drop the first, last, or both end ticks, for the case where a corner
      tick collides with its neighbour panel's.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: TickPrune
  nbins:
    name: nbins
    description: Upper bound on the number of ticks per axis. The lever to reach for
      when a dense mosaic runs its numbers together.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: integer
  xticks:
    name: xticks
    description: The x tick positions, stated outright. Unset lets the locator choose
      them.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: float
    multivalued: true
  yticks:
    name: yticks
    description: The y tick positions, stated outright.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: float
    multivalued: true
  hide_xticklabels:
    name: hide_xticklabels
    description: 'Draw the x ticks without their numbers. Declare `share_x` on the
      figure alongside it: hiding the numbers alone asserts a shared scale the axes
      may not have, and a reader then compares two panels drawn at different ranges.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: boolean
  hide_yticklabels:
    name: hide_yticklabels
    description: Draw the y ticks without their numbers. Same rule as `hide_xticklabels`,
      with `share_y`.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: boolean
  xtick_rotation:
    name: xtick_rotation
    description: 'Rotate the x tick labels, in degrees counter-clockwise. Worth reaching
      for when a dense row would otherwise run its numbers together: a slanted label
      is anchored at its tick rather than centred under it, so it costs width it would
      otherwise steal from its neighbour.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: float
  ytick_rotation:
    name: ytick_rotation
    description: Rotate the y tick labels, in degrees counter-clockwise.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: float
  xtick_format:
    name: xtick_format
    description: 'How x tick numbers are written: `sci` forces scientific notation,
      `plain` forbids it.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: TickFormat
  ytick_format:
    name: ytick_format
    description: How y tick numbers are written.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: TickFormat
  xtick_side:
    name: xtick_side
    description: Which edge the x ticks sit on.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: AxisSide
  ytick_side:
    name: ytick_side
    description: Which edge the y ticks sit on.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: AxisSide
  xlabel:
    name: xlabel
    description: 'The x axis label, as the figure prints it — unit included, LaTeX
      included. Unset leaves the renderer''s own, which is the encoded field''s bare
      name: right for a working figure, wrong for a printed one.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: string
  ylabel:
    name: ylabel
    description: The y axis label. See `xlabel`.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: string
  zlabel:
    name: zlabel
    description: The depth axis label of a 3-D panel. Ignored by every flat kind.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: string
  title:
    name: title
    description: A heading above the panel, in the panel's own words. A panel LETTER
      is not a title — that is `number`, which the layout places and sizes to the
      journal's convention.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    - Legend
    - Study
    range: string
  xlabel_pad:
    name: xlabel_pad
    description: Gap in points between the x axis label and its tick numbers, for
      where the default lets the two touch. Unset takes the theme's `label_pad`.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: float
  ylabel_pad:
    name: ylabel_pad
    description: Gap in points between the y axis label and its tick numbers. See
      `xlabel_pad`.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: float
  zlabel_pad:
    name: zlabel_pad
    description: Gap in points between the z axis label and its tick numbers. See
      `xlabel_pad`.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: float
  xlabel_side:
    name: xlabel_side
    description: Which edge the x axis LABEL sits on. The tick numbers stay where
      `xtick_side` puts them, so a label can cross to the far side of a panel whose
      ticks do not follow it.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: AxisSide
  ylabel_side:
    name: ylabel_side
    description: Which edge the y axis LABEL sits on. See `xlabel_side`.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: AxisSide
  xlim:
    name: xlim
    description: The x range, `[min, max]`. Declared rather than inferred, because
      two panels a figure asks the reader to compare must not end up on whatever ranges
      their own data happened to reach.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: float
    multivalued: true
  ylim:
    name: ylim
    description: The y range, `[min, max]`. See `xlim`.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: float
    multivalued: true
  zlim:
    name: zlim
    description: The depth range of a 3-D panel, `[min, max]`. Ignored by every flat
      kind.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: float
    multivalued: true
  xscale:
    name: xscale
    description: How the x axis maps values to distance.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: AxisScale
  yscale:
    name: yscale
    description: How the y axis maps values to distance.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: AxisScale
  aspect:
    name: aspect
    description: 'The DATA aspect ratio: `equal` — one unit of x is one unit of y,
      what a matrix or a spatial map needs — or `auto` to fill the cell, or a number.
      `box_aspect` shapes the frame instead.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    - Colorbar
    range: string
    any_of:
    - range: string
    - range: float
  box_aspect:
    name: box_aspect
    description: 'The frame''s height over its width, independent of the data ranges:
      a square panel over data that is not square. `aspect` constrains the data instead.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: float
  invert_x:
    name: invert_x
    description: Draw the x axis descending.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: boolean
  invert_y:
    name: invert_y
    description: Draw the y axis descending — the matrix convention, row 0 at the
      top.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: boolean
  invert_z:
    name: invert_z
    description: Draw the depth axis of a 3-D panel descending.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: boolean
  frame:
    name: frame
    description: 'Whether the panel keeps its frame and its ticks. `false` strips
      both, for a panel with no measurable axis: an image, a schematic, a connectivity
      matrix shown as a picture. Unset keeps them.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    - Layer
    - Legend
    range: boolean
  legend:
    name: legend
    description: 'A key for this panel''s own marks. `legend: true` draws it wherever
      the backend finds room, `legend: upper right` fixes the corner, and the object
      form states the rest — frame, columns, title. All three are one slot, so a panel
      that starts with a corner and later needs two columns keeps the word it had.
      Distinct from `kind: legend`, a standalone legend PANEL that occupies a cell
      of its own.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: Legend
    inlined: true
    any_of:
    - range: Legend
    - range: boolean
    - range: string
  colorbar:
    name: colorbar
    description: The colour scale printed beside this panel's field.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: Colorbar
    inlined: true
  surface:
    name: surface
    description: 'Geometry and colour scale of a `kind: surface` panel. Ignored by
      every other kind.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: Surface
    inlined: true
  volume:
    name: volume
    description: 'Geometry and colour scale of a `kind: volume` panel. Ignored by
      every other kind.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: Volume
    inlined: true
  network:
    name: network
    description: 'Graph and colour scale of a `kind: network` panel. Ignored by every
      other kind.'
    from_schema: https://w3id.org/tvbo/figure
    owner: Panel
    domain_of:
    - Subject
    - Session
    - Panel
    - Inset
    - SimulationExperiment
    range: Graph
    inlined: true
  grid:
    name: grid
    description: 'How a `kind: grid` panel tiles its cells. Ignored by every other
      kind.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: Grid
    inlined: true
  fill_cell:
    name: fill_cell
    description: Keep the position the layout engine gave this panel, rather than
      letting a later pass move it. For a panel whose position carries meaning — aligned
      with the one above it, or sized to match a sibling.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: boolean
  triangle_gap:
    name: triangle_gap
    description: Cells of blank left along the diagonal between two `triangle` layers,
      so the two halves of a split matrix read as two quantities rather than one image.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: integer
  rules:
    name: rules
    description: 'Straight reference lines drawn across the panel: a zero, a threshold,
      the identity line of a target-versus-simulated plot. Each carries its own colour
      and dash, so a rule and the way it is drawn cannot be stated apart.'
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: Rule
    multivalued: true
    inlined: true
    inlined_as_list: true
  regions:
    name: regions
    description: Rectangles ringing the windows this panel calls out — the parameter
      band a regime lives in, the interval a statistic was taken over.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    - Stimulus
    range: Region
    multivalued: true
    inlined: true
    inlined_as_list: true
  camera:
    name: camera
    description: Viewpoint for a 3-D panel or a surface. Ignored by every flat kind.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: Camera
    inlined: true
  annotations:
    name: annotations
    description: Positioned text labels drawn on the panel (e.g. 'K≈272') — a declarative
      alternative to a custom callable.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: Annotation
    multivalued: true
    inlined: true
    inlined_as_list: true
  insets:
    name: insets
    description: Sub-axes drawn inside this panel after its own body — the zoom windows,
      corner thumbnails and small key maps papers place over a plot. Declaring them
      keeps a panel that needs one from becoming a custom callable, which would take
      its whole interior out of the grammar.
    from_schema: https://w3id.org/tvbo/figure
    rank: 1000
    owner: Panel
    domain_of:
    - Panel
    range: Inset
    multivalued: true
    inlined: true
    inlined_as_list: true
  label:
    name: label
    from_schema: https://w3id.org/tvbo
    rank: 1000
    slot_uri: rdfs:label
    owner: Panel
    domain_of:
    - ParcellationTerminology
    - Subject
    - Session
    - Dataset
    - Contact
    - SoftwareEnvironment
    - Figure
    - Panel
    - Inset
    - Layer
    - Colorbar
    - Rule
    - Equation
    - Stimulus
    - Event
    - Parcellation
    - Tractogram
    - Matrix
    - Phenotype
    - Network
    - Node
    - Edge
    - Observation
    - Dynamics
    - StateVariable
    - Parameter
    - Function
    - FunctionCall
    - DerivedVariable
    - RandomStream
    - DataSource
    - OptimizationStage
    - Exploration
    - ExplorationAxis
    - FreeParameter
    - Inference
    - AlgorithmStage
    - TuningObjective
    - Continuation
    - Coupling
    - RegionMapping
    - SimulationExperiment
    - SimulationStudy
    - TimeSeries
    - NDArray
    - SpatialDomain
    - Mesh
    - SpatialField
    - FieldStateVariable
    - DifferentialOperator
    - BoundaryCondition
    - PDESolver
    - PDE
    range: string
  description:
    name: description
    description: The authored interpretive clause for this panel — the one part of
      its caption a human writes. The caption composer merges it with the structural
      descriptor it derives from the panel's layers (axis quantities/units, model/experiment,
      transform), so the sentence a reader sees is authored intent over computed fact
      and cannot drift when panels move or layers change.
    from_schema: https://w3id.org/tvbo
    rank: 1000
    slot_uri: dcterms:description
    owner: Panel
    domain_of:
    - CommonCoordinateSpace
    - Dataset
    - StudyLayout
    - StudyTemplate
    - StudyDirectory
    - StudyFile
    - ClinicalScore
    - SoftwarePackage
    - SoftwareRequirement
    - SoftwareEnvironment
    - Figure
    - Panel
    - Equation
    - Stimulus
    - Event
    - Tractogram
    - Matrix
    - ResultEntity
    - Activity
    - Phenotype
    - MeasureSpec
    - NamedArray
    - Network
    - GraphGenerator
    - ProcedureStep
    - File
    - Node
    - Edge
    - Observation
    - Dynamics
    - StateVariable
    - Parameter
    - CouplingInput
    - Argument
    - Function
    - FunctionCall
    - Callable
    - DerivedParameter
    - DerivedVariable
    - RandomStream
    - DataSource
    - OptimizationStage
    - Exploration
    - ExplorationAxis
    - FreeParameter
    - Inference
    - Prior
    - Likelihood
    - UpdateRule
    - AlgorithmStage
    - TuningObjective
    - Algorithm
    - BranchSwitch
    - Continuation
    - Integrator
    - Coupling
    - RegionMapping
    - SimulationExperiment
    - Study
    - ResultBinding
    - TimeSeries
    - NDArray
    - SpatialDomain
    - Mesh
    - SpatialField
    - FieldStateVariable
    - BoundaryCondition
    - PDESolver
    - PDE
    - Reducer
    range: string
  cell:
    name: cell
    description: 'What every cell of a `grid` is: the kind they all draw, and the
      opts they share. Each entry in `layers:` then fills one cell with this template,
      which is why a grid of twenty surfaces needs the surface declared once. Its
      `bounds` stay unset — the grid positions its cells.'
    from_schema: https://w3id.org/tvbo/figure
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: Inset
    inlined: true
  cells:
    name: cells
    description: A `grid`'s cells stated one at a time, for a grid whose cells differ
      — a first cell showing the bare mesh the rest are maps on, or a row pairing
      two kinds. Each is merged over `cell:`, and carries its own layers. Mutually
      exclusive with `layers:`, which is the compact form of the same thing.
    from_schema: https://w3id.org/tvbo/figure
    owner: Panel
    domain_of:
    - Panel
    - Inset
    range: Inset
    multivalued: true
    inlined: true
    inlined_as_list: true
  source:
    name: source
    description: 'For an `image` panel, the producing artifact its committed `path`
      is rendered FROM: a committed HTML/SVG file, a producing script, or a URL. `path`
      stays the placed output; `source` is what regenerates it deterministically,
      so a schematic or a live-platform view is provenance-tracked rather than an
      opaque binary pasted into the repo. Rendered through `capture:` when it is HTML/a
      URL; run as a script otherwise.'
    from_schema: https://w3id.org/tvbo
    rank: 1000
    slot_uri: dcterms:source
    owner: Panel
    domain_of:
    - Panel
    - Edge
    - Observation
    - Dynamics
    - Parameter
    - CouplingInput
    - Likelihood
    - ResultBinding
    range: string
  capture:
    name: capture
    description: 'How to turn an `image` panel''s HTML/URL `source` into its `path`:
      the headless-browser recipe (viewport, scale, wait, clip). The declarative form
      of code/capture-screenshots.py, so a screenshot regenerates from the spec instead
      of being hand-captured. Ignored when `source` is a static file or a script.'
    from_schema: https://w3id.org/tvbo/figure
    owner: Panel
    domain_of:
    - Panel
    range: RenderSpec
    inlined: true