This vignette assembles several scenarios meant to answer the kind of question a package user is likely to ask:
The current package renders dense 2D points and lines in WebGL. The examples below stay within that supported subset on purpose.
The vignette uses the standard preset to keep article
build time and page weight reasonable. The standalone gallery exporter
uses detail = "high_detail" by default.
Code examples are shown by default. Live WebGL widgets are disabled
during CRAN, package checks, and CI. Rich local or pkgdown rendering
requires GGWEBGL_EVAL_COVERAGE_VIGNETTE=true and
GGWEBGL_EVAL_LIVE_WIDGETS=true.
The examples also use the current shader surface deliberately:
density_splat for dense point fieldstrajectory_age for line and path bundleshover inspection in addition to pan and zoomWhy this example matters. This is the dense embedding case. It demonstrates whether ggWebGL can display cluster cores and transitional bridges in a way that feels closer to an interactive graphics system than to a static statistical scatterplot.
What to inspect. The transitional bridge should read as a continuous structure rather than as noise between clusters.
Rendering mode. This example uses
shader = "density_splat" to make dense regions accumulate
rather than read as a uniform cloud of isolated marks.
Why this example matters. This is the generative-ML example. It shows many simultaneous trajectories collapsing toward a small set of modes, which is the kind of dynamic structure a package user might expect from an interactive renderer demonstration.
What to inspect. Look for smooth bundles, endpoint concentration, and clear distinction between target modes.
Rendering mode. This example uses
shader = "trajectory_age" so later steps are visually
emphasized along each denoising path.
Why this example matters. This positions ggWebGL as a scientific visualization tool rather than only as an exploratory embedding viewer. The value proposition here is that many dynamical trajectories can remain legible in an interactive browser-native plot.
What to inspect. The repeated loops and eventual convergence patterns should be visible without resorting to raster precomputation.
Rendering mode. This example also uses
shader = "trajectory_age" so the flow direction remains
legible in dense orbit bundles.
Why this example matters. This is a mixed-layer example. Dense points provide a surrogate landscape while line layers show optimizer paths. It is useful because it demonstrates composition, not only raw primitive throughput.
What to inspect. The background field provides context; the traces show method-specific descent behaviour and final convergence points.
Rendering mode. This example uses
shader = "density_splat" for the dense point field while
leaving the optimizer traces crisp and readable.
The same scenarios are available in an interactive showcase Shiny app:
The standalone gallery export uses the denser preset:
source(system.file("examples", "htmlwidget", "renderer-showcase-gallery.R", package = "ggWebGL"))
export_renderer_showcase_gallery(detail = "high_detail")This app pairs the WebGL widget with a ggplot2 reference panel so a package user can judge how much of the analytical structure already survives the current translation path.