Create a 3D scatter plot with Plotly Graph Objects in Python

Plotly Graph Objects, a Python library within the broader Plotly ecosystem, offers a versatile and robust approach to crafting interactive data visualizations. Alongside Plotly ExpressPlotly Express is a high-level data visualization library in Python that provides a simplified syntax for creating interactive visualizations. It is built on top of the Plotly graphing library, which provides low-level control over graphs and figures. and Plotly.pyGraphing library for Python., it empowers users to seamlessly generate and tailor a range of charts, plots, and graphs, providing comprehensive control over visual elements and interactivity.

Plotly Graph Objects facilitate the creation of 3D scatter plots, which are powerful visualizations capable of representing data in three dimensions. In the 3D scatter plot, each data point is defined by three numerical values, typically corresponding to the x, y, and z coordinates. This form of visualization allows for a more comprehensive representation of relationships within multidimensional datasets.

Features of the 3D scatter plot

The following are some key features of 3D scatter plots using Plotly Graph Objects:

  • Data visualization: Plotly’s 3D scatter plot allows us to visualize data in a three-dimensional space, making it suitable for exploring relationships among three variables.

  • Interactive: By default, 3D scatter plots created with Plotly are interactive. We can zoom, pan, and rotate the plot to explore data from different angles.

  • Data points: Each data point in the scatter plot represents a marker. Based on the data or preferences, we can customize the marker style, size, and color.

  • Hover labels: When hovering over a data point, users can see additional information or labels associated with that point. This feature is useful for providing context to the data.

  • Color mapping: We can color data points based on a variable or attribute, allowing us to visualize data distribution or patterns more effectively. Plotly supports a variety of color scales.

  • Size mapping: Similar to color mapping, we can adjust the size of markers based on a variable, making it easier to represent data variations.

  • Custom annotations: We can add custom annotations, text labels, or shapes to the 3D plot to highlight specific data points or regions of interest.

  • 3D axes: Plotly provides full control over the appearance and labeling of the three axes (x, y, and z). We can customize axis titles, tick values, and their appearance.

  • Camera controls: We can programmatically set the view and camera angle for the 3D scatter plot to focus on specific regions of interest or viewpoints.

  • Multiple traces: We can overlay multiple scatter traces on the same 3D plot, making comparing different datasets or categories easy.

  • 3D projections: Plotly supports various 3D projection methods, such as orthographic, perspective, and turntable, allowing us to choose the best view for the data.

  • Animation: We can create animations in 3D scatter plots by updating the data or viewing over time, providing dynamic insights into the data.

  • Export options: Plotly allows us to save the 3D scatter plots as static images or interactive HTML files, making sharing our visualizations with others easy.

Syntax

The 3D scatter plot syntax typically follows this structure:

import plotly.graph_objects as go
scatter_3d = go.Scatter3d(
x=x_data,
y=y_data,
z=z_data,
mode='markers', # Specify the marker mode ('markers' for scatter plot)
marker=dict(
size=12, # Set the marker size
color='blue', # Set the marker color
opacity=0.8 # Set the marker opacity
)
...
)
Syntax of the 3D scatter plot

Parameters

The following are the key parameters for creating a 3D scatter plot using Plotly Graph Objects:

  • x, y, z: These parameters specify the data points for the scatter plot’s x, y, and z coordinates. They should be lists or arrays of numeric values representing the positions of data points in the three-dimensional space.

  • mode: This parameter specifies the mode of the scatter plot. Common options include:

    • 'markers': Display data points as markers.

    • 'lines': Connect data points with lines.

    • 'lines+markers': Display both markers and connecting lines.

  • marker: We can further customize the appearance of markers using the marker parameter. Some marker attributes include:

    • size: Set the marker size.

    • color: Define the marker color.

    • symbol: Specify the marker symbol (e.g., 'circle', 'square', 'cross').

    • opacity: Adjust the marker opacity.

  • text: We can provide a list of text labels associated with each data point. These labels will be displayed when the mouse hovers over the data points.

  • name: Assign a name to the just-explain scatter traceA set of instructions on how to display a scatter plot., which is useful when working with multiple traces in the same plot.

  • line: If using connecting lines, we can customize their appearance using the line parameter. Attributes include color, width, and dash for specifying line color, thickness, and style.

  • hoverinfo: Control the information displayed when hovering over data points. We can specify which information to show, such as coordinates, text labels, or none.

  • textposition: Define the position of the text labels relative to the markers. Options include 'top left', 'top right', 'bottom center', and more.

  • showlegend: Set to True or False to control whether the scatter plot appears in the legend when using multiple traces.

  • marker.colorscale: Specify a color scale for mapping a numeric variable to marker colors. This is useful for creating color-coded scatter plots.

  • colorbar: Customize the color bar associated with the color scale. We can set the title, tick values, and more.

  • connectgaps: If using connecting lines, set this parameter to True to connect data points with missing values.

  • scene: This parameter allows us to customize the appearance of the 3D scene, including axis titles, ranges, and background color.

  • projection: Define the 3D projection type, such as 'orthographic', 'perspective', or 'turntable'.

  • animation: Create animations by specifying frames and settings for dynamic 3D scatter plots.

  • title: Set the title of the entire plot.

  • aspectmode: Select 'auto', 'cube', 'data', or custom values to control the aspect ratio of the 3D plot.

When we create a 3D scatter plot using Plotly Graph Objects, we construct a figure object that encapsulates our three-dimensional visualization. This figure object comprehensively holds all the essential details regarding our 3D scatter plot, encompassing the data, scatter traces, layout specifications, and any additional configurations or adjustments we have implemented.

Implementation

In the following playground, we create a 3D scatter plot using a sample dataset called “Iris” provided by Plotly Express. Attributes of Iris dataset (sepal_width, sepal_length, petal_width, petal_length and species) defined as follows:

  • sepal_length: This is the length of the iris flower’s sepal (the outermost whorl of a flower), measured in centimeters.

  • sepal_width: This is the width of the iris flower’s sepal, measured in centimeters.

  • petal_length: This is the length of the iris flower’s petal (the innermost whorl of a flower), measured in centimeters.

  • petal_width: This is the width of the iris flower’s petal, measured in centimeters.

  • species: These are categorical labels representing the species of the iris flower, including “setosa,” “versicolor,” and “virginica.”

cd /usercode && python3 main.py
python3 -m http.server 5000 > /dev/null 2>&1 &
Load and visualize the Iris dataset with a 3D scatter plot using Plotly Graph Objects

Explanation

The code above is explained in detail below:

  • Lines 1–3: Import the necessary modules: plotly.graph_objects for creating custom plots, plotly.express for simplified plotting, and pandas for data manipulation.

  • Line 6: Load the Iris dataset using Plotly Express's built-in sample dataset.

  • Line 9: Print the first five rows of the loaded dataset using the head() method to inspect the data.

  • Lines 12–25: A 3D scatter plot figure is created using Plotly Graph Objects (go.Figure). Inside the go.Scatter3d constructor, the X, Y, and Z coordinates for the plot are specified, along with various settings such as marker size, color, and opacity. This section defines the data and appearance of the 3D scatter plot.

  • Lines 28–35: Customize the layout of the figure. It specifies the titles for the X, Y, and Z axes and sets the title of the entire plot. This allows us to control the overall appearance and labeling of the visualization.

  • Line 38: Display the finalized 3D scatter plot figure using the show() method.

Conclusion

The 3D scatter plots in Plotly Graph Objects offer a powerful means to visualize and explore data in a three-dimensional space. By leveraging the capabilities of Plotly, users can create interactive and visually appealing representations of their data, making it easier to discern patterns and relationships across multiple dimensions. With the ability to customize markers, colors, and layout, these plots facilitate the communication of complex information in an intuitive and engaging manner. Whether used for scientific analysis, engineering applications, or data exploration, 3D scatter plots in Plotly Graph Objects empower users to gain valuable insights from their data, contributing to more informed decision-making and enhanced data-driven storytelling.

Free Resources

Copyright ©2024 Educative, Inc. All rights reserved