How to Plot 3D Scatter Diagram Using ggplot in R - GeeksforGeeks (2024)

Last Updated : 30 Aug, 2024

Comments

Improve

The ggplot2 package in R is one of the most popular tools for creating complex and aesthetically pleasing plots. However, ggplot2 is primarily designed for 2D plotting, which presents a challenge when it comes to creating 3D scatter plots. While ggplot2 does not natively support 3D plotting, it can be combined with other packages like plotly or rgl to create interactive 3D scatter plots.

This article will guide you through the process of creating a 3D scatter plot using ggplot2 and plotly in R, along with theoretical concepts and practical examples.

Understanding 3D Scatter Plots

A 3D scatter plot displays points in a three-dimensional space, allowing you to visualize the relationship between three continuous variables. Each axis (x, y, z) represents one variable, and the points in the plot represent the observations.

Now we will discuss step-by-step implementation of How to Plot 3D Scatter Diagram Using ggplot using R Programming Language.

Step 1: Install and Load the Required Libraries

First, you need to install and load the ggplot2 and plotly libraries:

R
# Install the required packages if not already installedinstall.packages("ggplot2")install.packages("plotly")# Load the librarieslibrary(ggplot2)library(plotly)

Step 2: Create a Sample Dataset

To demonstrate how to create a 3D scatter plot, let’s start by creating a sample dataset with three variables:

R
# Create a sample datasetset.seed(123) # For reproducibilitydata <- data.frame( x = rnorm(100), y = rnorm(100), z = rnorm(100))# Preview the datasethead(data)

Output:

 x y z
1 -0.56047565 -0.71040656 2.1988103
2 -0.23017749 0.25688371 1.3124130
3 1.55870831 -0.24669188 -0.2651451
4 0.07050839 -0.34754260 0.5431941
5 0.12928774 -0.95161857 -0.4143399
6 1.71506499 -0.04502772 -0.4762469

This dataset consists of 100 observations of three normally distributed variables: x, y, and z.

Step 3: Create a Basic ggplot2 Scatter Plot

Start by creating a basic 2D scatter plot using ggplot2:

R
# Create a basic 2D scatter plot with ggplot2gg <- ggplot(data, aes(x = x, y = y, color = z)) + geom_point(size = 3) + labs(title = "2D Scatter Plot", x = "X Axis", y = "Y Axis", color = "Z Axis") + theme_minimal()# Display the plotprint(gg)

Output:

How to Plot 3D Scatter Diagram Using ggplot in R - GeeksforGeeks (1)

Plot 3D Scatter Diagram Using ggplot

This code creates a 2D scatter plot with x and y on the axes and z represented by the color of the points. However, to visualize the third dimension effectively, we need to create a 3D plot.

Step 4: Convert to a 3D Scatter Plot with plotly

To create a 3D scatter plot, we can use the plotly package, which allows interactive plotting and works well with ggplot2:

R
# Convert the ggplot object to a plotly object for 3D plottingp <- plot_ly(data, x = ~x, y = ~y, z = ~z, type = "scatter3d", mode = "markers", marker = list(size = 3)) %>% layout(title = "3D Scatter Plot", scene = list(xaxis = list(title = "X Axis"), yaxis = list(title = "Y Axis"), zaxis = list(title = "Z Axis")))# Display the 3D scatter plotp

Output:

How to Plot 3D Scatter Diagram Using ggplot in R - GeeksforGeeks (2)

Plot 3D Scatter Diagram Using ggplot

  • plot_ly: This function from the plotly package is used to create interactive plots. It takes data and maps the variables x, y, and z to the axes of the 3D plot.
  • type = "scatter3d": Specifies that the plot should be a 3D scatter plot.
  • mode = "markers": Indicates that points (markers) should be used to represent the data.
  • marker = list(size = 3): Sets the size of the markers.

Step 5: Customizing the 3D Plot

You can further customize the 3D scatter plot by adjusting the color, size, and shape of the points, as well as the appearance of the axes:

R
# Customizing the 3D scatter plotp <- plot_ly(data, x = ~x, y = ~y, z = ~z, type = "scatter3d", mode = "markers", marker = list(size = 5, color = ~z, colorscale = "Viridis", symbol = "circle")) %>% layout(title = "Customized 3D Scatter Plot", scene = list(xaxis = list(title = "X Axis"), yaxis = list(title = "Y Axis"), zaxis = list(title = "Z Axis", backgroundcolor = "rgb(230, 230,230)", gridcolor = "rgb(255, 255, 255)", showbackground = TRUE)))# Display the customized 3D scatter plotp

Output:

How to Plot 3D Scatter Diagram Using ggplot in R - GeeksforGeeks (3)

Plot 3D Scatter Diagram Using ggplot

  • colorscale = "Viridis": Sets a color gradient for the z variable, providing a visually appealing color scheme.
  • symbol = "circle": Specifies the shape of the markers.
  • backgroundcolor and gridcolor: Customize the appearance of the plot background and gridlines.

Conclusion

Although ggplot2 does not natively support 3D plots, combining it with plotly allows you to create interactive and customizable 3D scatter plots in R. This guide provided a step-by-step approach to creating a 3D scatter plot, from setting up the environment to customizing the plot’s appearance. With these tools, you can effectively visualize relationships between three continuous variables, enhancing your data analysis capabilities.



F

frostmkrcr

How to Plot 3D Scatter Diagram Using ggplot in R - GeeksforGeeks (4)

Improve

Previous Article

Data Visualisation using ggplot2(Scatter Plots)

Next Article

Programmatically Creating Markdown Tables in R with KnitR

Please Login to comment...

How to Plot 3D Scatter Diagram Using ggplot in R - GeeksforGeeks (2024)

References

Top Articles
Latest Posts
Article information

Author: Prof. Nancy Dach

Last Updated:

Views: 6339

Rating: 4.7 / 5 (57 voted)

Reviews: 88% of readers found this page helpful

Author information

Name: Prof. Nancy Dach

Birthday: 1993-08-23

Address: 569 Waelchi Ports, South Blainebury, LA 11589

Phone: +9958996486049

Job: Sales Manager

Hobby: Web surfing, Scuba diving, Mountaineering, Writing, Sailing, Dance, Blacksmithing

Introduction: My name is Prof. Nancy Dach, I am a lively, joyous, courageous, lovely, tender, charming, open person who loves writing and wants to share my knowledge and understanding with you.