Plotting API (ecgfeat.viz, viz extra)

Module ecgfeat.viz.

Name Kind Signature Summary
plot_ecg function (signal: 'ArrayLike', record: 'RecordLike', *, layout: "Literal['3x4', '6x2', '12x1']" = '3x4', rhythm_leads: 'Sequence[str]' = ('II',), start_s: 'float' = 0.0, duration_s: 'float \| None' = None, paper_speed: 'float' = 25.0, gain: 'float' = 10.0, annotations: "Literal['none', 'beats', 'waves']" = 'none', header: 'bool' = True, figure: 'Figure \| None' = None, style: "'sty.PlotStyle \| str \| None'" = None) -> 'tuple[Figure, Axes]' Plot the ECG on clinical ECG paper and return (figure, axes).
plot_record function (signal: 'ArrayLike', record: 'RecordLike', *, leads: 'Sequence[str] \| None' = None, start_s: 'float \| None' = None, end_s: 'float \| None' = None, annotations: 'AnnotationMode' = 'waves', figure: 'Figure \| None' = None, y_scale: "Literal['shared', 'independent']" = 'shared', style: "'sty.PlotStyle \| str \| None'" = None) -> 'tuple[Figure, tuple[Axes, ...]]' Plot selected ECG leads with record-backed annotations and return the figure and axes.
plot_beat function (signal: 'ArrayLike', record: 'RecordLike', *, beat: 'int', lead: 'str', figure: 'Figure \| None' = None, style: "'sty.PlotStyle \| str \| None'" = None) -> 'tuple[Figure, Axes]' Plot one beat on one lead using boundaries and measurements from the record.
plot_beat_all_leads function (signal: 'ArrayLike', record: 'RecordLike', *, beat: 'int', leads: 'Sequence[str] \| None' = None, figure: 'Figure \| None' = None, style: "'sty.PlotStyle \| str \| None'" = None) -> 'tuple[Figure, tuple[Axes, ...]]' Plot one beat across selected leads and return the figure and axes.
plot_representative_beat function (signal: 'ArrayLike', record: 'RecordLike', *, lead: 'str', figure: 'Figure \| None' = None, beats: "Literal['all', 'dominant']" = 'all', style: "'sty.PlotStyle \| str \| None'" = None) -> 'tuple[Figure, Axes]' Plot the representative beat for one lead: the median of the record's beats.
plot_median_beats function (signal: 'ArrayLike', record: 'RecordLike', *, leads: 'Sequence[str] \| None' = None, beats: "Literal['dominant', 'all']" = 'dominant', figure: 'Figure \| None' = None, style: "'sty.PlotStyle \| str \| None'" = None) -> 'tuple[Figure, tuple[Axes, ...]]' Median beat of every selected lead on one shared scale, in the standard 3 x 4 order.
plot_st_segments function (signal: 'ArrayLike', record: 'RecordLike', *, leads: 'Sequence[str] \| None' = None, point: "Literal['j', 'j60']" = 'j60', figure: 'Figure \| None' = None, style: "'sty.PlotStyle \| str \| None'" = None) -> 'tuple[Figure, tuple[tuple[Axes, ...], Axes]]' ST view: per-lead median beats around the J point and the record's ST levels per lead.
plot_rhythm function (signal: 'ArrayLike', record: 'RecordLike', *, lead: 'str' = 'II', start_s: 'float \| None' = None, end_s: 'float \| None' = None, figure: 'Figure \| None' = None, style: "'sty.PlotStyle \| str \| None'" = None) -> 'tuple[Figure, tuple[Axes, Axes]]' Rhythm view: a lead strip with beat classes and atrial events, over the RR tachogram.
plot_quality_summary function (signal: 'ArrayLike', record: 'RecordLike', *, leads: 'Sequence[str] \| None' = None, figure: 'Figure \| None' = None, metrics: "Literal['auto', 'noise', 'rms']" = 'auto', style: "'sty.PlotStyle \| str \| None'" = None) -> 'tuple[Figure, tuple[Axes, ...]]' Plot signal quality from the record and return (figure, (status_axes, detail_axes)).
plot_record_interactive function (signal: 'Any', record: 'Any', *, leads: 'Sequence[str] \| None' = None, style: 'Any' = None) -> 'Any' Plotly figure of the selected leads with hoverable landmarks (pip install "ecg-records[interactive]").
annotations_to_dict function (record: 'Any', *, leads: 'Sequence[str] \| None' = None) -> 'dict[str, Any]' JSON-ready annotations of record (no signal, no Matplotlib).
PlotStyle class (name: 'str' = 'light', surface: 'str' = '#fcfcfb', ink: 'str' = '#0b0b0b', ink_secondary: 'str' = '#52514e', muted: 'str' = '#898781', grid: 'str' = '#e1e0d9', baseline: 'str' = '#c3c2b7', series: 'tuple[str, ...]' = ('#2a78d6', '#eb6834', '#1baf7a', '#eda100', '#e87ba4', '#008300', '#6250d6', '#e34948'), diverging: 'tuple[str, str, str]' = ('#2a78d6', '#e34948', '#f0efec'), sequential: 'tuple[str, ...]' = ('#cde2fb', '#9ec5f4', '#6da7ec', '#3987e5', '#256abf', '#184f95', '#0d366b'), status: 'Mapping[str, str]' = <factory>, status_unknown: 'str' = '#898781', paper: 'str' = '#fffdfb', paper_minor: 'str' = '#f6cfd3', paper_major: 'str' = '#e8909a', paper_trace: 'str' = '#0b0b0b', trace_width: 'float' = 0.8, paper_trace_width: 'float' = 0.7, marker_size: 'float' = 6.0, hollow_marker_size: 'float' = 7.0, hollow_edge_width: 'float' = 1.1, font_size: 'float' = 8.0, title_size: 'float' = 9.0, fiducials: 'Mapping[str, MarkerStyle]' = <factory>) -> None Every colour and size the plots use. Derive variants with :meth:replace.
get_style function () -> 'PlotStyle' The style plots use when called without style=.
set_style function (style: 'PlotStyle \| str') -> 'PlotStyle' Replace the process default ("light", "dark" or a :class:PlotStyle); returns the previous one.
use_style function (style: 'PlotStyle \| str') -> 'Iterator[PlotStyle]' Use style for plots created inside the with block.
VisualizationInputError class (message: 'str', *, code: 'str' = 'visualization_input_error', **details: 'object') -> 'None' Signal data do not match the acquisition identity declared by the ECG Record.