Skip to main content

Geom

Trait Geom 

Source
pub trait Geom: Send + Sync {
Show 16 methods // Required methods fn draw( &self, data: &DataFrame, coord: &dyn Coord, scales: &ScaleSet, theme: &Theme, backend: &mut dyn DrawBackend, ) -> Result<(), RenderError>; fn required_aes(&self) -> Vec<Aesthetic>; fn default_stat(&self) -> Box<dyn Stat>; fn default_position(&self) -> Box<dyn Position>; fn default_params(&self) -> GeomParams; fn name(&self) -> &str; // Provided methods fn set_series_color(&mut self, _color: (u8, u8, u8)) { ... } fn apply_element_geom(&mut self, _el: &ElementGeom) { ... } fn include_zero_baseline(&self) -> bool { ... } fn allows_infinite(&self) -> bool { ... } fn keeps_na_as_break(&self) -> bool { ... } fn consumes_tooltips(&self) -> bool { ... } fn setup_data(&self, _data: &mut DataFrame, _warnings: &mut Vec<String>) { ... } fn inherit_aes(&self) -> bool { ... } fn mapped_only_columns(&self) -> &'static [&'static str] { ... } fn validate_layer( &self, _pre_stat_columns: &[String], _stat_name: &str, ) -> Result<(), String> { ... }
}
Expand description

Trait for geometric objects that draw data on the plot.

Required Methods§

Source

fn draw( &self, data: &DataFrame, coord: &dyn Coord, scales: &ScaleSet, theme: &Theme, backend: &mut dyn DrawBackend, ) -> Result<(), RenderError>

Draw this geometry.

Source

fn required_aes(&self) -> Vec<Aesthetic>

Required aesthetics.

Source

fn default_stat(&self) -> Box<dyn Stat>

Default stat for this geom.

Source

fn default_position(&self) -> Box<dyn Position>

Default position adjustment.

Source

fn default_params(&self) -> GeomParams

Non-mapped visual defaults.

Source

fn name(&self) -> &str

Name for debug/display.

Provided Methods§

Source

fn set_series_color(&mut self, _color: (u8, u8, u8))

Apply a brand/primary color to this geom’s single-series default (its 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 apply_element_geom(&mut self, _el: &ElementGeom)

Recolour this geom’s built-in default colour/fill from the theme’s ink/paper/accent palette (B2-7’s 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 include_zero_baseline(&self) -> bool

Whether this geom draws from a 0 baseline, so the Y scale should include 0 even when y is explicitly mapped (bars/columns/area/histograms — as in ggplot2). Default false.

Source

fn allows_infinite(&self) -> bool

Whether -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

Whether a row with a non-finite position is a break rather than a removal (ggplot2’s 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 consumes_tooltips(&self) -> bool

Whether this geom calls [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 setup_data(&self, _data: &mut DataFrame, _warnings: &mut Vec<String>)

Geom-specific data preparation after the stat and position steps but before scale training (ggplot2’s GeomX$setup_data) — e.g. a tile adds its xmin/xmax/ymin/ymax extents so continuous scales train on them. warnings is the layer’s own build-warnings sink (B3-5: added so GeomBoxplot can warn on an unparsable outlier value here, the same channel every other build warning uses — never eprintln!). Default: no-op.

Source

fn inherit_aes(&self) -> bool

Whether the layer inherits the plot-level aesthetic mapping (ggplot2’s 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.

Source

fn mapped_only_columns(&self) -> &'static [&'static str]

Canonical column names this geom only reads when the user actually mapped the corresponding aesthetic (D3, B3-5) — never from a raw column that merely happens to share the name (e.g. a SQL alias literally called 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>

Stat-dependent layer validation beyond 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.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl Geom for GeomAbline

Source§

impl Geom for GeomArea

Source§

impl Geom for GeomBar

Source§

impl Geom for GeomBin2d

Source§

impl Geom for GeomBlank

Source§

impl Geom for GeomBoxplot

Source§

impl Geom for GeomBracket

Source§

impl Geom for GeomCandlestick

Source§

impl Geom for GeomCensorMarks

Source§

impl Geom for GeomCol

Source§

impl Geom for GeomContour

Source§

impl Geom for GeomCooksContour

Source§

impl Geom for GeomCount

Source§

impl Geom for GeomCrossbar

Source§

impl Geom for GeomCurve

Source§

impl Geom for GeomDensity

Source§

impl Geom for GeomDensity2d

Source§

impl Geom for GeomDotplot

Source§

impl Geom for GeomErrorbar

Source§

impl Geom for GeomErrorbarh

Source§

impl Geom for GeomFreqpoly

Source§

impl Geom for GeomHex

Source§

impl Geom for GeomHistogram

Source§

impl Geom for GeomHline

Source§

impl Geom for GeomJitter

Source§

impl Geom for GeomLabel

Source§

impl Geom for GeomLabelRepel

Source§

impl Geom for GeomLine

Source§

impl Geom for GeomLinerange

Source§

impl Geom for GeomOhlc

Source§

impl Geom for GeomPath

Source§

impl Geom for GeomPoint

Source§

impl Geom for GeomPointrange

Source§

impl Geom for GeomPolygon

Source§

impl Geom for GeomQQ

Source§

impl Geom for GeomQQBand

Source§

impl Geom for GeomQQLine

Source§

impl Geom for GeomRaster

Source§

impl Geom for GeomRect

Source§

impl Geom for GeomRibbon

Source§

impl Geom for GeomRug

Source§

impl Geom for GeomSegment

Source§

impl Geom for GeomSmooth

Source§

impl Geom for GeomSpoke

Source§

impl Geom for GeomStep

Source§

impl Geom for GeomStepribbon

Source§

impl Geom for GeomText

Source§

impl Geom for GeomTextRepel

Source§

impl Geom for GeomTile

Source§

impl Geom for GeomViolin

Source§

impl Geom for GeomVline