Documentation
¶
Overview ¶
draw.go contains geometry rendering functions for the ggplot rendering pipeline. Each draw function maps data coordinates to pixel positions using a coordinate system and renders shapes via the canvas abstraction.
Package ggplot is a production-grade, pure-Go Grammar of Graphics plotting library.
Inspired by R's ggplot2, it provides a declarative, composable API for building statistical visualizations from data, aesthetics, geometries, scales, coordinate systems, facets, and themes.
Quick Start ¶
p := ggplot.New(ds,
aes.X("x"),
aes.Y("y"),
aes.Color("group"),
).
Layer(geom.Point(geom.WithSize(4), geom.WithAlpha(0.7))).
Layer(geom.Smooth(geom.WithMethod("lm"))).
Labs(ggplot.Title("My Plot"), ggplot.XLab("X Axis")).
Theme("minimal").
Save("output.png", 1200, 800)
Architecture ¶
The library follows a strict pipeline:
PlotSpec → Validate → Stat Transform → Scale Training → Layout → Render
All data flows through the dataset.Dataset abstraction backed by Apache Arrow for zero-copy performance, with lazy evaluation for ETL operations.
util.go contains internal utility functions used across the ggplot rendering pipeline.
Index ¶
- type LabOpt
- type Plot
- func (p *Plot) Aes(mappings ...aes.Mapping) *Plot
- func (p *Plot) Coord(c coord.Coord) *Plot
- func (p *Plot) CoordFlip() *Plot
- func (p *Plot) FacetGrid(rowCol, colCol string) *Plot
- func (p *Plot) FacetWrap(col string, opts ...facet.WrapOpt) *Plot
- func (p *Plot) Labs(opts ...LabOpt) *Plot
- func (p *Plot) Layer(l geom.Layer, localAes ...aes.Mapping) *Plot
- func (p *Plot) LegendPosition(pos string) *Plot
- func (p *Plot) Render(width, height int) (*canvas.GGCanvas, error)
- func (p *Plot) Save(filename string, width, height int) error
- func (p *Plot) ScaleX(scaleType string) *Plot
- func (p *Plot) ScaleY(scaleType string) *Plot
- func (p *Plot) Theme(name string) *Plot
- func (p *Plot) XLim(min, max float64) *Plot
- func (p *Plot) YLim(min, max float64) *Plot
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Plot ¶
type Plot struct {
// contains filtered or unexported fields
}
Plot is the immutable, declarative plot builder. Every method returns a new Plot with the modification applied, enabling a fluent chaining style.
Plot is safe to share and reuse — modifying a derived plot does not affect the original.
func (*Plot) Layer ¶
Layer adds a geometry layer to the plot with optional per-layer aesthetic overrides.
func (*Plot) LegendPosition ¶
LegendPosition sets the legend placement. Valid values: "right" (default), "left", "top", "bottom", "none".
func (*Plot) Render ¶
Render produces the rendered canvas for further processing. This is the low-level entry point; prefer [Save] or Show for common cases.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package aes provides aesthetic mapping constructors for the Grammar of Graphics.
|
Package aes provides aesthetic mapping constructors for the Grammar of Graphics. |
|
Package coord defines coordinate systems that control how data positions are mapped to the 2D plotting surface.
|
Package coord defines coordinate systems that control how data positions are mapped to the 2D plotting surface. |
|
Package dataset provides zero-copy, lazy-evaluating columnar data abstractions for the Grammar of Graphics pipeline.
|
Package dataset provides zero-copy, lazy-evaluating columnar data abstractions for the Grammar of Graphics pipeline. |
|
arrow
Package arrow provides an Apache Arrow-backed compute engine for the dataset package.
|
Package arrow provides an Apache Arrow-backed compute engine for the dataset package. |
|
bigquery
Package bigquery implements a BigQuery SQL pushdown engine for the dataset library.
|
Package bigquery implements a BigQuery SQL pushdown engine for the dataset library. |
|
compute
Package compute provides portable SIMD primitives for the dataset engines.
|
Package compute provides portable SIMD primitives for the dataset engines. |
|
csv
Package csv provides CSV reading and writing for the dataset package.
|
Package csv provides CSV reading and writing for the dataset package. |
|
math
Package math provides SIMD-accelerated mathematical transforms for the dataset engines.
|
Package math provides SIMD-accelerated mathematical transforms for the dataset engines. |
|
memory
Package memory provides a lightweight Go-slice-backed compute engine for the dataset package.
|
Package memory provides a lightweight Go-slice-backed compute engine for the dataset package. |
|
parquet
Package parquet provides Parquet reading and writing for the dataset package.
|
Package parquet provides Parquet reading and writing for the dataset package. |
|
sort
Package sort provides SIMD-accelerated sorting for the dataset engines.
|
Package sort provides SIMD-accelerated sorting for the dataset engines. |
|
examples
|
|
|
annotations
command
Example: Reference lines and text annotations.
|
Example: Reference lines and text annotations. |
|
butterfly
command
Example: Butterfly curve with continuous color gradient.
|
Example: Butterfly curve with continuous color gradient. |
|
categorical
command
Example: Boxplot and Categorical (Discrete) X Axis
|
Example: Boxplot and Categorical (Discrete) X Axis |
|
clifford
command
Example: Clifford attractor with continuous color gradient.
|
Example: Clifford attractor with continuous color gradient. |
|
color_mapping
command
Example: Multi-Group Scatter with Colour Mapping and Legend
|
Example: Multi-Group Scatter with Colour Mapping and Legend |
|
geometries/area
command
|
|
|
geometries/bar
command
|
|
|
geometries/histogram
command
|
|
|
geometries/line
command
|
|
|
geometries/point
command
|
|
|
geometries/smooth
command
|
|
|
multiline
command
Example: Multi-Line Plot
|
Example: Multi-Line Plot |
|
phase2_features
command
Phase 2: Coordinates, Faceting, Themes, Guides, Aesthetics, LegendPosition
|
Phase 2: Coordinates, Faceting, Themes, Guides, Aesthetics, LegendPosition |
|
phase2_geometries
command
Phase 2: Geometries — Point, Line, Step, Bar, Histogram, Area, Density, Rug, HLine, VLine, Text, BoxPlot, Smooth
|
Phase 2: Geometries — Point, Line, Step, Bar, Histogram, Area, Density, Rug, HLine, VLine, Text, BoxPlot, Smooth |
|
phase2_scales
command
Phase 2: Scales — Linear, Log10, Sqrt, Reverse, Discrete
|
Phase 2: Scales — Linear, Log10, Sqrt, Reverse, Discrete |
|
phase2_statistics
command
Phase 2: Statistics — Identity, Bin/Count, Density (KDE), Smooth (LOESS), Summary, BoxPlot
|
Phase 2: Statistics — Identity, Bin/Count, Density (KDE), Smooth (LOESS), Summary, BoxPlot |
|
showcase
command
Example: Feature Showcase
|
Example: Feature Showcase |
|
themes
command
Example: Theme Showcase
|
Example: Theme Showcase |
|
Package facet splits a dataset into subsets for "small multiple" panel layouts.
|
Package facet splits a dataset into subsets for "small multiple" panel layouts. |
|
Package geom provides geometry specifications for the Grammar of Graphics.
|
Package geom provides geometry specifications for the Grammar of Graphics. |
|
Package guide provides axis, legend, and title rendering for plots.
|
Package guide provides axis, legend, and title rendering for plots. |
|
internal
|
|
|
canvas
Package canvas defines the rendering backend abstraction.
|
Package canvas defines the rendering backend abstraction. |
|
color
Package color provides color palettes and utilities for data visualization.
|
Package color provides color palettes and utilities for data visualization. |
|
fonts
Package fonts provides a cross-platform, pure-Go typography subsystem.
|
Package fonts provides a cross-platform, pure-Go typography subsystem. |
|
Package output provides rendering output abstractions for exporting and displaying plots.
|
Package output provides rendering output abstractions for exporting and displaying plots. |
|
Package position defines position adjustments that control how overlapping geometries are arranged.
|
Package position defines position adjustments that control how overlapping geometries are arranged. |
|
Package scale provides scale transformations that map data values to visual aesthetic values.
|
Package scale provides scale transformations that map data values to visual aesthetic values. |
|
Package stat provides statistical transformations for the Grammar of Graphics.
|
Package stat provides statistical transformations for the Grammar of Graphics. |
|
Package theme provides visual styling configurations for plots.
|
Package theme provides visual styling configurations for plots. |








