3D plot
Step 1: Install and Load the rgl
Package
Ensure that you have the rgl
package installed and loaded in your R environment.
# Install rgl if not already installed
if
(!require
("rgl")) install.packages
("rgl")
# Load the rgl package
library
(rgl
)
Step 2: Prepare a Dataset
For demonstration purposes, create or use a sample 3D dataset (e.g., random
points in 3D space).
# Sample dataset with random 3D points
set.seed
(123)
n
<- 100
x
<- rnorm
(n
)
y
<- rnorm
(n
)
z
<- rnorm
(n
)
colors
<- rainbow
(n
)
Step 3: Create a Basic 3D Plot
Use plot3d()
to create a
basic 3D scatter plot.
# Create a 3D scatter plot
plot3d
(x
, y
, z
, col
= colors
, size
=
5, type
=
's', xlab
=
"X-axis", ylab
=
"Y-axis", zlab
=
"Z-axis")
Step 4: Enhance the Plot with
Customization
Add customizations like grid lines, labels, and lighting for better
visualization.
# Add grid lines
grid3d
("x")
grid3d
("y")
grid3d
("z")
# Enhance lighting
light3d
(specular
=
"white")
Step 5: Set Up Rotation Parameters
Define a sequence of angles to rotate the plot and simulate a continuous
rotation.
# Define rotation parameters
angles
<- seq
(0,
360, by
=
5)
# 5-degree increments
Step 6: Rotate the Plot Programmatically
Use a loop to rotate the plot around a specific axis (e.g., the z-axis).
# Rotate around the z-axis
for
(angle
in angles
)
{
view3d
(theta
= angle
, phi
=
30)
# Rotate theta; phi is the vertical angle
Sys.sleep
(0.1)
# Pause for 0.1 seconds for smooth transition
}
Step 7: Export the Visualization
Save the interactive 3D plot as an HTML widget or image file for sharing or
further use.
# Save as an interactive HTML file
rglwidget
()
%>% htmlwidgets
::saveWidget
("3D_plot_rotation.html")
# Save as a static image (PNG)
rgl.snapshot
("3D_plot_rotation.png")
Step 8: Test and Adjust
- Experiment
with different rotation axes (
x
,y
, orz
) by modifyingview3d()
parameters. - Adjust the
speed of rotation using
Sys.sleep()
.
Outcome
By the end of this exercise, you will have an interactive 3D plot that
smoothly rotates, providing a dynamic visualization of the data. You can
integrate this plot with tools like plotly
or embed it into web presentations for a polished output.