import dascore as dc
patch = dc.get_example_patch("example_event_2")
patch.viz.waterfall(show=True);
DASCore plots are available from the object they describe: Patch.viz, Spool.viz, and Inventory.viz.
Patch.viz.waterfall plots patch data as an image. Its default 1.5×IQR color limits reduce the influence of outliers.

scale_type="relative" interprets scale as a fraction of the dynamic range around the mean. scale_type="absolute" accepts explicit limits.

Pass an existing Matplotlib axis to compose the plot with other panels. The returned axis can be customized with the normal Matplotlib API.
After Patch.enrich adds inventory labels as coordinates, label_coord marks their ranges along the plot edges. Boolean coordinates mark membership under their coordinate name.

Labels are drawn on both spines of their associated dimension, with faint lines across the image at value changes. Missing labels leave the spine bare. Coordinates associated with time use the top and bottom spines; distance coordinates use the left and right.
Patch.viz.wiggle draws offset traces. Time-like stacking axes are inverted; other axes retain their normal direction.
The default stacks traces along distance, leaving positive amplitudes upward. If traces are stacked along time, the time axis is inverted and positive amplitudes point right in the conventional display.
Inventory plots show the observing system without loading patch data. These examples use the deployment from the tunnel inventory recipe.
Inventory.viz.path draws each track against optical distance. Use distance= to focus on part of the fiber.
Tracks are drawn in optical order. Point features such as splices appear as ticks, while intervals such as boreholes occupy their measured spans.
Inventory.viz.map draws two physical coordinates. color= accepts optical distance, coupling, geometry columns, or label groups. Unsurveyed fiber is left as a gap.
The default color is optical distance, which links a distance read from a waterfall to its physical location. Choose x and y for the useful view; a vertical borehole collapses to a point in plan view.
Inventory.viz.timeline shows when acquisitions and optical paths are valid. Hatched ends indicate unbounded epochs.
Open-ended validity intervals continue beyond the corresponding side of the axis. Use the timeline before selecting a time= for the path or map when an inventory contains several configurations.
Spool plots use index metadata, so they do not load patch arrays.
Spool.viz.coverage gives each compatible patch group a lane showing its runs, gaps, and coverage percentage. It uses the same grouping and gaps as get_coverage and get_gaps.
Lane names contain the metadata that separates compatible groups and append that group’s coverage. A spool representation uses the same kind attributes for tracks, but coverage lanes may split a track further by sampling rate or coordinate structure.
Time is the default dimension; pass another one as in spool.viz.coverage("distance"). Select a smaller spool before plotting when coverage percentages should describe a smaller window; change only the axes to zoom without changing the statistics.
Setting axis limits instead keeps the full-spool percentages and only changes the viewport. A line continuing beyond an axis edge then correctly indicates data outside the visible window.
Spool.viz.calendar summarizes long time ranges by day. Each cell is the union of all selected patch groups and cannot exceed 100%; grey cells are invalid calendar dates.
Because each day is a union, simultaneous acquisitions do not count twice. Empty valid dates represent no coverage; grey cells represent dates which do not exist, such as February 30.
Select an acquisition before plotting it alone. Use method="gap" to emphasize short gaps or method="count" to show overlapping patch counts.
The group argument controls which boundaries count as gaps; it does not select an acquisition. Filter the spool first when the calendar should describe only part of the archive.