Creating 3D Surface Plots with Matplotlib

PythonPythonBeginner
Practice Now

This tutorial is from open-source community. Access the source code

Introduction

This lab demonstrates how to create a 3D surface plot using Matplotlib in Python. The surface is plotted using a solid color. The lab will guide you through each step of the process, including creating the data, plotting the surface, and setting the aspect ratio.

VM Tips

After the VM startup is done, click the top left corner to switch to the Notebook tab to access Jupyter Notebook for practice.

Sometimes, you may need to wait a few seconds for Jupyter Notebook to finish loading. The validation of operations cannot be automated because of limitations in Jupyter Notebook.

If you face issues during learning, feel free to ask Labby. Provide feedback after the session, and we will promptly resolve the problem for you.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("`Python`")) -.-> python/BasicConceptsGroup(["`Basic Concepts`"]) matplotlib(("`Matplotlib`")) -.-> matplotlib/BasicConceptsGroup(["`Basic Concepts`"]) matplotlib(("`Matplotlib`")) -.-> matplotlib/AdvancedPlottingGroup(["`Advanced Plotting`"]) python(("`Python`")) -.-> python/DataStructuresGroup(["`Data Structures`"]) python(("`Python`")) -.-> python/ModulesandPackagesGroup(["`Modules and Packages`"]) python(("`Python`")) -.-> python/DataScienceandMachineLearningGroup(["`Data Science and Machine Learning`"]) python/BasicConceptsGroup -.-> python/comments("`Comments`") matplotlib/BasicConceptsGroup -.-> matplotlib/importing_matplotlib("`Importing Matplotlib`") matplotlib/BasicConceptsGroup -.-> matplotlib/figures_axes("`Understanding Figures and Axes`") matplotlib/AdvancedPlottingGroup -.-> matplotlib/3d_plots("`3D Plots`") python/DataStructuresGroup -.-> python/tuples("`Tuples`") python/ModulesandPackagesGroup -.-> python/importing_modules("`Importing Modules`") python/DataScienceandMachineLearningGroup -.-> python/numerical_computing("`Numerical Computing`") python/DataScienceandMachineLearningGroup -.-> python/data_visualization("`Data Visualization`") subgraph Lab Skills python/comments -.-> lab-48970{{"`Creating 3D Surface Plots with Matplotlib`"}} matplotlib/importing_matplotlib -.-> lab-48970{{"`Creating 3D Surface Plots with Matplotlib`"}} matplotlib/figures_axes -.-> lab-48970{{"`Creating 3D Surface Plots with Matplotlib`"}} matplotlib/3d_plots -.-> lab-48970{{"`Creating 3D Surface Plots with Matplotlib`"}} python/tuples -.-> lab-48970{{"`Creating 3D Surface Plots with Matplotlib`"}} python/importing_modules -.-> lab-48970{{"`Creating 3D Surface Plots with Matplotlib`"}} python/numerical_computing -.-> lab-48970{{"`Creating 3D Surface Plots with Matplotlib`"}} python/data_visualization -.-> lab-48970{{"`Creating 3D Surface Plots with Matplotlib`"}} end

Importing Required Libraries

The first step is to import the required libraries. In this lab, we are using Matplotlib and NumPy libraries.

import matplotlib.pyplot as plt
import numpy as np

Creating Data

The next step is to create the data for the 3D surface. We need to define u, v, x, y, and z. These variables will represent the angles and coordinates required to plot the surface. The linspace() function from NumPy is used to create the angles, and the outer() function is used to create the coordinates.

## Make data
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = 10 * np.outer(np.cos(u), np.sin(v))
y = 10 * np.outer(np.sin(u), np.sin(v))
z = 10 * np.outer(np.ones(np.size(u)), np.cos(v))

Creating the 3D Surface Plot

Now we can create the 3D surface plot. We start by creating a figure and adding a subplot with the projection='3d' argument. Then, we use the plot_surface() function to plot the surface using the data we created in the previous step.

## Plot the surface
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.plot_surface(x, y, z)

Setting the Aspect Ratio

To ensure that the plot has an equal aspect ratio, we can use the set_aspect() function. We pass in the string value 'equal' to set the aspect ratio to 1:1.

## Set an equal aspect ratio
ax.set_aspect('equal')

Summary

This lab demonstrated how to create a 3D surface plot using Matplotlib in Python. We created the data, plotted the surface, and set the aspect ratio. The resulting plot is a basic 3D surface plot with a solid color.

Other Python Tutorials you may like