This function plots symbols similarly to what the base graphics function points does when pch is specified.

pch3d(x, y = NULL, z = NULL, pch = 1, 
      bg = material3d("color")[1], cex = 1, radius, 
      color = "black", lit = FALSE, ...)


x, y, z

The locations at which to plot in a form suitable for use in xyz.coords.


A vector of integers or single characters describing the symbols to plot.


The fill color(s) to use for pch from 21 to 25.


A relative size of the symbol to plot.


An absolute size of the symbol to plot in user coordinates.


The color(s) to use for symbols.


Whether the object responds to lighting or just shows the displayed color directly.


Other material properties.


The list of symbols encoded by numerical pch values is given in the points help page.


This function is not a perfect match to how the points function works due to limitations in RGL and OpenGL. In particular:

Symbols with numbers from 1 to 25 are drawn as 3D sprites (see sprites3d), so they will resize as the window is zoomed. Letters and numbers from 32 to 255 (which are mapped to letters) are drawn using text3d, so they maintain a fixed size.

A calculation somewhat like the one in plot3d that sets the size of spheres is used to choose the size of sprites based on cex and the current scaling. This will likely need manual tweaking. Use the radius argument for a fixed size.

No special handling is done for the case of pch = ".". Use points3d for small dots.

As of rgl version 0.100.10, background and foreground colors can vary from symbol to symbol.


A vector of object id values is returned invisibly. Separate objects will be drawn for each different combination of pch value from 0 to 25, color and bg, and another holding all the character symbols.


Duncan Murdoch

See also


i <- 0:25; x <- i %% 5; y <- rep(0, 26); z <- i %/% 5
pch3d(x, y, z, pch = i, bg = "gray", color = rainbow(26))
text3d(x, y, z + 0.3, i)
pch3d(x + 5, y, z, pch = i+65)
text3d(x + 5, y, z + 0.3, i+65)