wolfhece.assets.boxplot.zones_asset =================================== .. py:module:: wolfhece.assets.boxplot.zones_asset .. autoapi-nested-parse:: Boxplot chart asset factory producing native Zones for mapviewer rendering. Draws N side-by-side boxplots inside a configurable canvas rectangle. Each boxplot consists of: - a filled box (Q1 … Q3) - a median line (Q2) - lower/upper whiskers with end caps - optional outlier diamonds - optional mean diamond marker - an optional series label below the plot area Module Contents --------------- .. py:class:: BoxplotZonesAsset(series: Sequence[Sequence[float]], *, canvas_origin: tuple[float, float] = (0.0, 0.0), canvas_size: tuple[float, float] = (100.0, 80.0), area_fraction: tuple[float, float, float, float] = (0.1, 0.08, 0.92, 0.88), labels: Sequence[str] | None = None, colors: Sequence[tuple[int, int, int] | tuple[int, int, int, int]] | None = None, whis: float = 1.5, y_min: float | None = None, y_max: float | None = None, box_width_fraction: float = 0.55, show_mean: bool = False, show_outliers: bool = True, show_labels: bool = True, show_area_frame: bool = True, frame_color: tuple[int, int, int] = (40, 40, 40), border_color: tuple[int, int, int] = (25, 25, 25), median_color: tuple[int, int, int] = (20, 20, 20), legend_text_color: tuple[int, int, int] = (0, 0, 0), frame_line_width: float = 1.0, box_line_width: float = 1.0, whisker_line_width: float = 1.0, median_line_width: float = 2.0, idx: str = 'boxplot', parent=None, mapviewer=None) Build a side-by-side boxplot chart as a single Zones object. .. py:attribute:: DEFAULT_COLORS :type: tuple[tuple[int, int, int, int], Ellipsis] :value: ((41, 98, 255, 180), (0, 166, 118, 180), (255, 122, 69, 180), (138, 79, 255, 180), (255, 178, 0,... .. py:attribute:: model .. py:attribute:: canvas_origin .. py:attribute:: canvas_size .. py:attribute:: area_fraction .. py:attribute:: _colors :value: [] .. py:attribute:: y_min .. py:attribute:: y_max .. py:attribute:: box_width_fraction .. py:attribute:: show_mean :value: False .. py:attribute:: show_outliers :value: True .. py:attribute:: show_labels :value: True .. py:attribute:: show_area_frame :value: True .. py:attribute:: frame_color .. py:attribute:: border_color .. py:attribute:: median_color .. py:attribute:: legend_text_color .. py:attribute:: frame_line_width .. py:attribute:: box_line_width .. py:attribute:: whisker_line_width .. py:attribute:: median_line_width .. py:attribute:: idx :value: '' .. py:attribute:: parent :value: None .. py:attribute:: mapviewer :value: None .. py:method:: to_zones() -> wolfhece.PyVertexvectors.Zones Build and return the Zones object containing all boxplot geometry. .. py:method:: _plot_area() -> tuple[float, float, float, float, float, float] Return (ax0, ay0, ax1, ay1, aw, ah) of the plot area in world coords. .. py:method:: _effective_y_range(stats, ay0: float, ah: float) -> tuple[float, float] .. py:method:: _yw(v: float, ay0: float, ah: float, y_lo: float, y_hi: float) -> float :staticmethod: Map data value *v* to world Y coordinate. .. py:method:: _add_rect_outline(parent_zone: wolfhece.PyVertexvectors.zone, name: str, x1: float, y1: float, x2: float, y2: float, color: tuple, line_width: float) -> wolfhece.PyVertexvectors.vector .. py:method:: _add_filled_rect(parent_zone: wolfhece.PyVertexvectors.zone, name: str, x1: float, y1: float, x2: float, y2: float, rgba: tuple, *, border_color: tuple | None = None, border_width: float = 1.0) -> wolfhece.PyVertexvectors.vector .. py:method:: _add_open_line(parent_zone: wolfhece.PyVertexvectors.zone, name: str, pts: list[tuple[float, float, float]], color: tuple, line_width: float) -> wolfhece.PyVertexvectors.vector .. py:method:: _normalize_colors(colors: Sequence[tuple] | None) -> list[tuple[int, int, int, int]]