pub struct GeomBoxplot {Show 15 fields
pub fill: (u8, u8, u8),
pub color: (u8, u8, u8),
pub width: f64,
pub alpha: f64,
pub notch: bool,
pub notch_width: f64,
pub varwidth: bool,
pub coef: f64,
pub outliers: bool,
pub outlier_color: Option<(u8, u8, u8)>,
pub outlier_shape: PointShape,
pub outlier_filled: bool,
pub outlier_size: f64,
pub outlier_alpha: f64,
pub staple_width: f64,
}Expand description
Boxplot geometry (ggplot2’s geom_boxplot).
Fields§
§fill: (u8, u8, u8)§color: (u8, u8, u8)§width: f64§alpha: f64§notch: boolNotched box: the sides pinch in to notch_width of the box at the
median, spanning median ± 1.58·IQR/√n (notch = TRUE).
notch_width: f64Box width at the notch, relative to the box (notchwidth, 0.5).
varwidth: boolBox width ∝ √n of the group (varwidth = TRUE).
coef: f64Whisker reach in IQRs passed to the default stat (coef, 1.5).
outliers: boolDraw the outlier points (outliers = FALSE hides them).
outlier_color: Option<(u8, u8, u8)>Outlier point colour; None = the box outline colour.
outlier_shape: PointShapeOutlier point shape (outlier.shape; default an open circle).
outlier_filled: boolFill outlier points (outlier.shape = 19-like) instead of outlining.
outlier_size: f64Outlier point radius in px (outlier.size).
outlier_alpha: f64Outlier point opacity (outlier.alpha).
staple_width: f64Whisker end-cap width relative to the box (staplewidth; 0 = none).
ggplot2’s default is 0; ggplot-rs keeps its historical 0.5 caps.
Implementations§
Source§impl GeomBoxplot
impl GeomBoxplot
Sourcepub fn hide_outliers(self) -> Self
pub fn hide_outliers(self) -> Self
outliers = FALSE: no outlier points, and they don’t widen the y scale.
Sourcepub fn with_staple_width(self, w: f64) -> Self
pub fn with_staple_width(self, w: f64) -> Self
staplewidth — whisker cap width relative to the box (0 = none).
Trait Implementations§
Source§impl Clone for GeomBoxplot
impl Clone for GeomBoxplot
Source§impl Debug for GeomBoxplot
impl Debug for GeomBoxplot
Source§impl Default for GeomBoxplot
impl Default for GeomBoxplot
Source§impl Geom for GeomBoxplot
impl Geom for GeomBoxplot
Source§fn default_position(&self) -> Box<dyn Position>
fn default_position(&self) -> Box<dyn Position>
ggplot2’s default: grouped boxes sit side by side in their x slot.
Source§fn setup_data(&self, data: &mut DataFrame, warnings: &mut Vec<String>)
fn setup_data(&self, data: &mut DataFrame, warnings: &mut Vec<String>)
B3-5: normalise the outliers cell (strip brackets, drop unparsable
parts with one warning) and widen ymin_final/ymax_final to
include every outlier, so the y scale trains on the full extent
(allowed #6) instead of silently clipping outliers that fall
outside the whiskers.
Source§fn draw(
&self,
data: &DataFrame,
coord: &dyn Coord,
scales: &ScaleSet,
_theme: &Theme,
backend: &mut dyn DrawBackend,
) -> Result<(), RenderError>
fn draw( &self, data: &DataFrame, coord: &dyn Coord, scales: &ScaleSet, _theme: &Theme, backend: &mut dyn DrawBackend, ) -> Result<(), RenderError>
Source§fn required_aes(&self) -> Vec<Aesthetic>
fn required_aes(&self) -> Vec<Aesthetic>
Source§fn default_stat(&self) -> Box<dyn Stat>
fn default_stat(&self) -> Box<dyn Stat>
Source§fn default_params(&self) -> GeomParams
fn default_params(&self) -> GeomParams
Source§fn apply_element_geom(&mut self, el: &ElementGeom)
fn apply_element_geom(&mut self, el: &ElementGeom)
element_geom), called once per
layer before set_series_color — and only
when the layer was not configured explicitly (geom_*_with(...);
the build pipeline gates the call on the same explicit_style flag
set_series_color’s brand-colour application is gated on). That
gate, not a field-value comparison, is what keeps an explicit colour
untouched: a geom that honours this replaces a field still at its
own hard-coded default (black/(50, 50, 50) → ink, white →
paper) by comparing its value, which cannot by itself tell an
explicitly-set colour that happens to equal that default (e.g.
GeomPoint { color: (0, 0, 0), .. } under geom_point_with) apart
from one that was simply never touched — only skipping the call
entirely for an explicitly-configured layer closes that gap (review
PR#141 finding 4). Default no-op; None fields of ElementGeom
change nothing, so the default theme (no ink/paper/accent set)
stays byte-identical.Source§fn set_series_color(&mut self, color: (u8, u8, u8))
fn set_series_color(&mut self, color: (u8, u8, u8))
color or fill). The build pipeline calls this only when the layer has
no color/fill aesthetic mapped, so an explicit mapping always wins. The
default is a no-op; series geoms override it.Source§fn mapped_only_columns(&self) -> &'static [&'static str]
fn mapped_only_columns(&self) -> &'static [&'static str]
lower). build_layer drops any of these columns
right after resolve_mappings unless the aesthetic was mapped.
Default empty; GeomBoxplot returns ["lower", "middle", "upper", "outliers"].Source§fn validate_layer(
&self,
pre_stat_columns: &[String],
stat_name: &str,
) -> Result<(), String>
fn validate_layer( &self, pre_stat_columns: &[String], stat_name: &str, ) -> Result<(), String>
required_aes
(B3-5): called once per layer with the resolved (pre-stat, post-D3-drop)
column names and the layer’s stat name, before the stat runs. Default
no-op. GeomBoxplot requires lower/middle/upper to be mapped
under stat="identity", else y.Source§fn consumes_tooltips(&self) -> bool
fn consumes_tooltips(&self) -> bool
set_row_extras] (so it reads
Aes::tooltip and
Aes::data_attr, and a
GGPlot::tooltip template on it has
a visible effect). Default false; the build pipeline warns when a
tooltip() template is set on a layer whose geom returns false
here (review PR#141 finding 6, LOW: a template silently did nothing
on e.g. geom_area/geom_boxplot/geom_ribbon). Point, segment,
curve, path, line, hex, polygon, sf, rect/tile and col/bar/
histogram return true.Source§fn figure_band_height(&self, _width: f64, _theme: &Theme) -> Option<f64>
fn figure_band_height(&self, _width: f64, _theme: &Theme) -> Option<f64>
width, when it draws once
there instead of in every panel (e.g. GeomAttribution::figure).
Default None (drawn per panel).Source§fn include_zero_baseline(&self) -> bool
fn include_zero_baseline(&self) -> bool
y is explicitly mapped (bars/columns/area/histograms — as
in ggplot2). Default false.Source§fn allows_infinite(&self) -> bool
fn allows_infinite(&self) -> bool
-Inf/Inf position values are meaningful for this geom
(ggplot2: “extend to the panel edge”). Rows with infinite positions are
otherwise dropped with a warning before stats run. NaN is always
dropped — unless Geom::keeps_na_as_break says otherwise. Default
false; geom_rect returns true.Source§fn keeps_na_as_break(&self) -> bool
fn keeps_na_as_break(&self) -> bool
GeomPath/GeomLine NA handling): the row still
counts toward the “removed N rows” warning, but it is not deleted
from the built DataFrame, so the geom’s own per-group point list
still contains it — as a non-finite pixel position after the scale
and coordinate transform, which crate::render::backend::DrawBackend::draw_line
splits on into separate polylines (ggplot2’s NA-break semantics)
instead of silently joining the finite points across the gap.
Default false (the row is dropped, as for every other geom);
line/path/step return true.Source§fn key_glyph(&self) -> Option<KeyGlyph>
fn key_glyph(&self) -> Option<KeyGlyph>
draw_key, #410).
None = the plain per-aesthetic swatch (fill square, point shape,
line type …), which is also what a key falls back to for a geom not
listed here. Overridable per layer with
GGPlot::key_glyph.Source§fn inherit_aes(&self) -> bool
fn inherit_aes(&self) -> bool
inherit.aes). Reference-line geoms return false, as in ggplot2, so a
plot-level color/x/y mapping does not leak into a geom_hline.
Default true.Auto Trait Implementations§
impl Freeze for GeomBoxplot
impl RefUnwindSafe for GeomBoxplot
impl Send for GeomBoxplot
impl Sync for GeomBoxplot
impl Unpin for GeomBoxplot
impl UnsafeUnpin for GeomBoxplot
impl UnwindSafe for GeomBoxplot
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more