Creating Customized 3D Surface Plots

PythonPythonBeginner
Practice Now

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

Introduction

In this lab, we will learn how to create a 3D surface plot with a checkerboard pattern using Python Matplotlib library. We will create a 3D surface plot, customize the colors of the surface, and adjust the limits of the z-axis.

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/ControlFlowGroup(["`Control Flow`"]) python(("`Python`")) -.-> python/DataStructuresGroup(["`Data Structures`"]) python(("`Python`")) -.-> python/ModulesandPackagesGroup(["`Modules and Packages`"]) python(("`Python`")) -.-> python/DataScienceandMachineLearningGroup(["`Data Science and Machine Learning`"]) python(("`Python`")) -.-> python/FunctionsGroup(["`Functions`"]) 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/BasicConceptsGroup -.-> python/variables_data_types("`Variables and Data Types`") python/BasicConceptsGroup -.-> python/strings("`Strings`") python/ControlFlowGroup -.-> python/for_loops("`For Loops`") python/DataStructuresGroup -.-> python/lists("`Lists`") python/DataStructuresGroup -.-> python/tuples("`Tuples`") python/ModulesandPackagesGroup -.-> python/importing_modules("`Importing Modules`") python/ModulesandPackagesGroup -.-> python/using_packages("`Using Packages`") python/DataScienceandMachineLearningGroup -.-> python/numerical_computing("`Numerical Computing`") python/DataScienceandMachineLearningGroup -.-> python/data_visualization("`Data Visualization`") python/FunctionsGroup -.-> python/build_in_functions("`Build-in Functions`") subgraph Lab Skills python/comments -.-> lab-48971{{"`Creating Customized 3D Surface Plots`"}} matplotlib/importing_matplotlib -.-> lab-48971{{"`Creating Customized 3D Surface Plots`"}} matplotlib/figures_axes -.-> lab-48971{{"`Creating Customized 3D Surface Plots`"}} matplotlib/3d_plots -.-> lab-48971{{"`Creating Customized 3D Surface Plots`"}} python/variables_data_types -.-> lab-48971{{"`Creating Customized 3D Surface Plots`"}} python/strings -.-> lab-48971{{"`Creating Customized 3D Surface Plots`"}} python/for_loops -.-> lab-48971{{"`Creating Customized 3D Surface Plots`"}} python/lists -.-> lab-48971{{"`Creating Customized 3D Surface Plots`"}} python/tuples -.-> lab-48971{{"`Creating Customized 3D Surface Plots`"}} python/importing_modules -.-> lab-48971{{"`Creating Customized 3D Surface Plots`"}} python/using_packages -.-> lab-48971{{"`Creating Customized 3D Surface Plots`"}} python/numerical_computing -.-> lab-48971{{"`Creating Customized 3D Surface Plots`"}} python/data_visualization -.-> lab-48971{{"`Creating Customized 3D Surface Plots`"}} python/build_in_functions -.-> lab-48971{{"`Creating Customized 3D Surface Plots`"}} end

Import required libraries

In this step, we will import the required libraries, which include matplotlib.pyplot, numpy, and LinearLocator from matplotlib.ticker.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import LinearLocator

Create data for the surface plot

In this step, we will create data for the surface plot. We will create a meshgrid of X and Y values, calculate the radial distance R, and calculate the Z value based on the R value using np.sin().

## Create data for the surface plot
X = np.arange(-5, 5, 0.25)
xlen = len(X)
Y = np.arange(-5, 5, 0.25)
ylen = len(Y)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

Create colors for the surface plot

In this step, we will create colors for the surface plot. We will create an empty array of strings with the same shape as the meshgrid, and populate it with two colors in a checkerboard pattern.

## Create colors for the surface plot
colortuple = ('y', 'b')
colors = np.empty(X.shape, dtype=str)
for y in range(ylen):
    for x in range(xlen):
        colors[y, x] = colortuple[(x + y) % len(colortuple)]

Create the surface plot

In this step, we will create the surface plot with face colors taken from the array we made. We will also customize the z-axis.

## Create the surface plot
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, Z, facecolors=colors, linewidth=0)

## Customize the z axis
ax.set_zlim(-1, 1)
ax.zaxis.set_major_locator(LinearLocator(6))

## Show the plot
plt.show()

Summary

In this lab, we have learned how to create a 3D surface plot with a checkerboard pattern using Python Matplotlib library. We have learned how to create data for the surface plot, create colors for the surface plot, create the surface plot, and customize the z-axis. This knowledge can be applied to create various types of 3D surface plots for different applications.

Other Python Tutorials you may like