Data visualization is a crucial aspect of any data analysis project. With the advent of high-dimensional datasets, the need for visualizations that can include more than two dimensions becomes quite significant. 3D plots are a way to visually represent data that has three dimensions. In R, various packages enable the creation of 3D plots, each with unique features and capabilities. This guide will introduce you to the process of creating 3D plots in R using several packages, including rgl
, scatterplot3d
, plot3D
, and ggplot2
with plotly
.
1. Understanding 3D Plots
3D plots represent three-dimensional data, i.e., data with three variables. The three axes (x, y, and z) of a 3D plot correspond to three variables of a dataset. By visualizing data in 3 dimensions, you can explore patterns, trends, relationships, and structures in the data that may not be as apparent in 2-dimensional space.
2. Preliminaries
Before creating the 3D plots, let’s first install and load the necessary packages:
# Install necessary libraries
install.packages(c("rgl", "scatterplot3d", "plot3D", "ggplot2", "plotly"))
# Load necessary libraries
library(rgl)
library(scatterplot3d)
library(plot3D)
library(ggplot2)
library(plotly)
3. Creating 3D Scatter Plots with scatterplot3d
The scatterplot3d
package is used to create 3D scatter plots. The primary function in this package is also named scatterplot3d
.
# Create 3D data
set.seed(123)
x <- rnorm(100)
y <- rnorm(100)
z <- rnorm(100)
data <- data.frame(x, y, z)
# Create a 3D scatter plot
scatterplot3d::scatterplot3d(x = data$x, y = data$y, z = data$z,
main="3D Scatter Plot with scatterplot3d",
xlab="X-axis", ylab="Y-axis", zlab="Z-axis",
color="blue", pch=19)

In this example, we first create a dataset with three variables (x, y, z). The scatterplot3d
function then creates a 3D scatter plot from these variables. The color
and pch
arguments control the color and shape of the points, respectively.
4. Creating 3D Plots with rgl
The rgl
package is another useful tool for creating 3D plots in R. It provides more advanced functions and can create a wider range of 3D plots. Also, rgl
creates interactive plots that can be rotated and zoomed.
# Create a 3D scatter plot
rgl::plot3d(x = data$x, y = data$y, z = data$z,
type="s", radius=0.1, col="red",
xlab="X-axis", ylab="Y-axis", zlab="Z-axis")
# Add a title
title3d(main = "3D Scatter Plot with rgl")

In this example, the plot3d
function from the rgl
package creates a 3D scatter plot. The type="s"
argument creates spheres, and the radius
argument controls the size of these spheres. The col
argument controls the color of the points.
5. Creating 3D Plots with plot3D
The plot3D
package in R allows for the creation of basic to more advanced 3D plots, including 3D line plots, scatter plots, surface plots, mesh plots, etc.
# Create a 3D scatter plot
plot3D::scatter3D(x = data$x, y = data$y, z = data$z,
colvar = NULL, col = "green",
xlab = "X-axis", ylab = "Y-axis", zlab = "Z-axis",
main = "3D Scatter Plot with plot3D")

In this example, scatter3D
function from plot3D
package is used to create a 3D scatter plot. The colvar
argument can be used to specify a variable for coloring the points; if it’s NULL, all points are the same color.
6. Creating Interactive 3D Plots with ggplot2 and plotly
While ggplot2
does not support 3D plots, it can be combined with the plotly
package to create interactive 3D plots. The ggplotly
function from the plotly
package converts ggplot2
plots into interactive plots.
# Create a 3D scatter plot
p <- ggplot2::ggplot(data, aes(x = x, y = y, z = z)) +
geom_point(color = "purple") +
labs(title = "3D Scatter Plot with ggplot2 and plotly",
x = "X-axis", y = "Y-axis", z = "Z-axis")
# Convert to an interactive plot
plotly::ggplotly(p)

In this example, ggplot2
creates a 2D scatter plot, and ggplotly
converts it into an interactive 3D scatter plot. The interactive plot can be rotated and zoomed, which is useful for exploring the data in more detail.
7. Conclusion
Creating 3D plots in R is not as straightforward as creating 2D plots, but the additional dimension can provide valuable insights into the data. The choice of package for creating 3D plots depends on your specific needs. The scatterplot3d
and plot3D
packages provide easy-to-use functions for creating static 3D plots, the rgl
package can create a wide range of interactive 3D plots, and ggplot2
combined with plotly
can create interactive 3D plots with the familiar ggplot2
syntax. It’s worth exploring these packages and understanding their strengths and weaknesses to select the right tool for your data visualization tasks.