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 installedif (!require("rgl")) install.packages("rgl")  # Load the rgl packagelibrary(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 pointsset.seed(123)n <- 100x <- 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 plotplot3d(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 linesgrid3d("x")grid3d("y")grid3d("z")  # Enhance lightinglight3d(specular = "white")Step 5: Set Up Rotation Parameters
Define a sequence of angles to rotate the plot and simulate a continuous
rotation.
# Define rotation parametersangles <- seq(0, 360, by = 5) # 5-degree incrementsStep 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-axisfor (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 filerglwidget() %>% 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.

 

