ivue is an R package for interactive three-dimensional visualization of data and embedded graphs. Combine point clouds and graph edges with numerical or categorical colors, labels, paths, and surfaces; explore them in RStudio or a web browser; and share them as interactive HTML. Reusable color scales and camera controls keep related views consistent, while coordinate animations let you follow a changing shape or recorded layout. ivue works with coordinates from your chosen analysis or embedding method.
The following animation shows the same 12,000 mouse retinal cells
colored by developmental stage and annotated cell type. Shared
coordinates and synchronized views show how the two annotations relate.
The data come from Clark et
al. (2019); the layout was computed with dgraphs and
grip, then rendered with ivue. The retinal-development
vignette presents the complete example and its provenance, while the
introduction
vignette explains the plotting controls.
View a static alternative without motion.
Install the current development build (not yet a CRAN release). This built source package includes all five rendered guides. Install its dependencies first:
install.packages(c("htmlwidgets", "htmltools", "rgl"))
install.packages("https://pgajer.github.io/ivue/ivue_0.1.0.tar.gz",
repos = NULL, type = "source")
vignette("function-guide", package = "ivue")The documentation site
identifies the source commit and provides the same guides online. The
built package includes them for offline reading; you do not need
knitr, rmarkdown, or Pandoc to read them.
Start with a coordinate matrix, one observation per row. This sample from a saddle is colored by height:
library(ivue)
set.seed(1)
x <- runif(250, -1, 1)
y <- runif(250, -1, 1)
X <- cbind(x = x, y = y, z = 1.2 * (x^2 - y^2))
plot3D.cont(X, values = X[, "z"], legend.title = "Saddle height")The plot opens in RStudio’s Viewer or your browser, where you can
rotate and zoom it. No native graphics window or XQuartz setup is
needed. Assign the returned widget to a variable to reuse it or save it
with htmlwidgets::saveWidget().
With explicit coordinate row IDs, named annotations match those IDs in both point-cloud and graph views. Unnamed annotations follow row order. See the input recipes for checks and a shuffled-annotation example.
The same plotting controls also let you compare coordinate systems while keeping observations and colors fixed. Below, the retinal cells appear in published UMAP coordinates, a symmetric-kNN graph layout fitted with weighted-GRIP followed by edge-KK refinement, and a PHATE embedding.
View a static alternative without motion.
All three embeddings were fitted on 120,804 cells before selecting the same 12,000 retained retinal cells for display. UMAP uses Canberra distance; the symmetric 4-nearest-neighbor graph and PHATE use Euclidean distance. PHATE uses 2,000 spectral landmarks and an automatically selected diffusion time. All panels show points without edges and complete a rotation in 14.4 seconds, starting with their P14 centroids facing the viewer. ivue renders the supplied coordinates without computing the embeddings.
The vignettes develop these examples and show how to adapt them to your data:
The links above open rendered guides. Their maintained sources are on GitHub. Open the same guides from your installation with:
vignette("function-guide", package = "ivue")
vignette("example-data", package = "ivue")
vignette("ivue-introduction", package = "ivue")
vignette("retinal-development", package = "ivue")
vignette("animation", package = "ivue")Report problems or suggest improvements in the issue tracker.