PlotTheme
DeepSpaceTelemetry.PlotTheme — Module
PlotThemePublication plotting standards shared by every figure: the Okabe–Ito semantic palette, journal-width figure geometry, print-scale typography, and the CairoMakie theme (telemetry_theme).
DeepSpaceTelemetry.PlotTheme.PlotStyle — Type
PlotStylePrint-scale parameters of one figure set: scale relative to the double-column design width (178 mm ↔ 673 Makie units), the derived figure sizes, line width, marker size, and the font sizes (body, axis label, tick label, legend, in-axis annotation). Fonts and strokes do not shrink linearly with the width — PlotStyle(scale) floors them so text stays ≥ 7 pt at the final print size — and narrow figures gain height for the legends that wrap.
DeepSpaceTelemetry.PlotTheme.style_for_width — Function
style_for_width(column_width_mm::Real) -> PlotStyleThe PlotStyle of a figure printed column_width_mm wide (Makie units are 1/96 inch; 178 mm is the design width, scale 1).
DeepSpaceTelemetry.PlotTheme.label — Function
label(style::PlotStyle, long::AbstractString, short::AbstractString) -> AbstractStringlong at the design width, short for narrow figures (scale < 0.7), where a long axis label would collide with the neighboring panel. Plain and LaTeX strings alike.
DeepSpaceTelemetry.PlotTheme.annotation_side — Function
annotation_side(occupied, x_lo, x_hi; fraction = 0.38) -> SymbolWhich end of an axis an in-axis annotation block should occupy: :right unless one of the occupied x positions — the upright rules and shaded edges a figure draws — falls within fraction of the axis width of the right edge, in which case :left. fraction is the block's own width relative to the axis (annotation_width_fraction), so the test asks exactly whether a rule would cross the text. When both ends are occupied it stays :right, since moving buys nothing.
DeepSpaceTelemetry.PlotTheme.annotation_width_fraction — Function
annotation_width_fraction(style::PlotStyle, text, axis_width) -> Float64Width of the annotation text as a fraction of an axis axis_width Makie units wide, capped at 0.45 — beyond that neither end of the axis is free and annotation_side has nothing to choose between.
DeepSpaceTelemetry.PlotTheme.label_extent — Function
label_extent(style::PlotStyle, text; fontsize = style.fontsize_label) -> Float64Estimated rendered length of text in Makie units, i.e. the height a rotated y-label occupies or the width an annotation line takes. The estimate takes half an em per character, the mean advance of the text face, and exists to floor panel heights and to place annotation blocks clear of upright rules; nothing is positioned precisely with it.
DeepSpaceTelemetry.PlotTheme.legend_row_height — Function
legend_row_height(style::PlotStyle) -> Float64Height of one row of a horizontal figure legend in Makie units: the entry patch and the gap above it, at the legend size of style.
DeepSpaceTelemetry.PlotTheme.line_advance — Function
line_advance(style::PlotStyle) -> Float64Vertical advance between two lines of in-axis annotation text in Makie units: the line height of the theme's text face (height / units_per_EM, the multiplier Makie applies to multi-line text) times the annotation font size. Places a second text primitive directly under a first, e.g. a plain block below a LaTeX headline.
DeepSpaceTelemetry.PlotTheme.save_figure — Function
save_figure(fig, dir::String, stem::String; formats = ("png", "pdf"), suffix = "") -> StringSaves fig as <dir>/<stem><suffix>.<ext> for every extension in formats — PNG at px_per_unit = 4 (≥ 380 dpi at print size), vector formats at native size — and returns the path of the first one.
DeepSpaceTelemetry.PlotTheme.telemetry_theme — Function
telemetry_theme(style::PlotStyle = PlotStyle())Returns a CairoMakie Theme configured for publication-quality telemetry plots at the final printed width: (New) Computer Modern faces via MathTeXEngine (a plain font = "Computer Modern" string is ignored by current Makie and silently falls back to DejaVu), ≈ 9 pt body text at double-column scale (floored at ≈ 7 pt for narrower styles), boxed axes with inward ticks, no titles, no minor ticks, faint dashed grid. Tick-label rotation is applied per axis where labels actually crowd (session HH:MM axes), not globally.
DeepSpaceTelemetry.PlotTheme.COLOR_LIVE — Constant
COLOR_LIVEPlot color for near-real-time (Live, FIFO-priority) data batches (Okabe–Ito sky blue).
DeepSpaceTelemetry.PlotTheme.COLOR_ARCHIVE — Constant
COLOR_ARCHIVEPlot color for blind-spot archive (LIFO-backfilled) data batches (Okabe–Ito bluish green).
DeepSpaceTelemetry.PlotTheme.COLOR_BANDWIDTH — Constant
COLOR_BANDWIDTHPlot color for the DSN link-capacity (bandwidth) curve (Okabe–Ito blue).
DeepSpaceTelemetry.PlotTheme.COLOR_ONBOARD — Constant
COLOR_ONBOARDPlot color for the onboard SSD backlog curve (Okabe–Ito orange; role is additionally encoded by the dashed line style, so the figure survives grayscale).
DeepSpaceTelemetry.PlotTheme.COLOR_LOST — Constant
COLOR_LOSTPlot color for permanently lost (retry-exhausted) data batches (Okabe–Ito vermillion; role additionally encoded by ✕ markers).
DeepSpaceTelemetry.PlotTheme.COLOR_COUNTERFACTUAL — Constant
COLOR_COUNTERFACTUALPlot color for counterfactual quantities — the first-in, first-out drain the alert-latency figure contrasts with the realized doctrine (Okabe–Ito reddish purple; role additionally encoded by the dotted line style).
DeepSpaceTelemetry.PlotTheme.COLOR_DISRUPTION — Constant
COLOR_DISRUPTIONBase color for disruption-event window shading: a neutral dark wash for the blackout span that fades to zero alpha across the recovery ramp, with dashed same-hue edge lines at higher alpha. Deliberately neutral so it never competes with the series palette.
DeepSpaceTelemetry.PlotTheme.COLOR_OUTAGE — Constant
COLOR_OUTAGEBase color for component-outage window shading: a neutral wash at low alpha with dotted same-hue edge lines at higher alpha, so unscheduled infrastructure outages stay apart from the series palette and, by line style, from the dashed disruption shading.
DeepSpaceTelemetry.PlotTheme.COLOR_MARKER — Constant
COLOR_MARKERPlot color for the per-event-marker realized latency curves of the alert-latency figure — a family apart from the population bands, its members told apart by cycling line styles.
DeepSpaceTelemetry.PlotTheme.COLOR_GUIDE — Constant
COLOR_GUIDENeutral grey for population aggregates and reference guides: the all-batches delivery curve, the delivery-requirement line, and its label.
DeepSpaceTelemetry.PlotTheme.COLOR_FUTURE — Constant
COLOR_FUTUREWash of the not-yet-generated region of the batch-state raster: a near-white that reads as absence rather than as one more state, so the generation front appears as the boundary of the drawn area.
DeepSpaceTelemetry.PlotTheme.FIG_SIZE_SUMMARY — Constant
FIG_SIZE_SUMMARYMission-summary figure size in Makie units: 178 mm double-column width at the final printed scale (three stacked panels + legend strip).
DeepSpaceTelemetry.PlotTheme.FIG_SIZE_SESSION — Constant
FIG_SIZE_SESSIONSession-detail figure size in Makie units: 178 mm double-column width (two stacked panels + legend strip).
DeepSpaceTelemetry.PlotTheme.LINEWIDTH_DATA — Constant
LINEWIDTH_DATAData-series line width in Makie units (≈ 1.1 pt at final print scale; PlotStyle floors the scaled width at 0.9 of it, ≈ 1 pt, for narrower figures).
DeepSpaceTelemetry.PlotTheme.MARKERSIZE_DATA — Constant
MARKERSIZE_DATAMarker size in Makie units for event pins and legend glyphs — one size everywhere, so every figure of the project draws it identically.
DeepSpaceTelemetry.PlotTheme.FONTSIZE_ANNOTATION — Constant
FONTSIZE_ANNOTATIONIn-axis annotation font size in Makie units (≈ 7.5 pt at print scale).