Projecting Filled Contour Onto a 3D Graph

PythonPythonBeginner
Practice Now

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

Introduction

This lab will guide you through the process of creating a 3D surface graph with filled contour profiles projected onto the walls of the graph. This is a useful visualization technique for understanding complex 3D data. We will be using Python's Matplotlib library to create the graph.

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 matplotlib(("`Matplotlib`")) -.-> matplotlib/BasicConceptsGroup(["`Basic Concepts`"]) matplotlib(("`Matplotlib`")) -.-> matplotlib/AdvancedPlottingGroup(["`Advanced Plotting`"]) matplotlib(("`Matplotlib`")) -.-> matplotlib/SpecializedPlotsGroup(["`Specialized Plots`"]) python(("`Python`")) -.-> python/BasicConceptsGroup(["`Basic Concepts`"]) python(("`Python`")) -.-> python/DataStructuresGroup(["`Data Structures`"]) python(("`Python`")) -.-> python/ModulesandPackagesGroup(["`Modules and Packages`"]) python(("`Python`")) -.-> python/PythonStandardLibraryGroup(["`Python Standard Library`"]) python(("`Python`")) -.-> python/DataScienceandMachineLearningGroup(["`Data Science and Machine Learning`"]) python(("`Python`")) -.-> python/FunctionsGroup(["`Functions`"]) matplotlib/BasicConceptsGroup -.-> matplotlib/importing_matplotlib("`Importing Matplotlib`") matplotlib/BasicConceptsGroup -.-> matplotlib/figures_axes("`Understanding Figures and Axes`") matplotlib/AdvancedPlottingGroup -.-> matplotlib/3d_plots("`3D Plots`") matplotlib/SpecializedPlotsGroup -.-> matplotlib/contour_plots("`Contour Plots`") python/BasicConceptsGroup -.-> python/variables_data_types("`Variables and Data Types`") python/DataStructuresGroup -.-> python/tuples("`Tuples`") python/ModulesandPackagesGroup -.-> python/importing_modules("`Importing Modules`") python/ModulesandPackagesGroup -.-> python/using_packages("`Using Packages`") python/PythonStandardLibraryGroup -.-> python/data_collections("`Data Collections`") python/DataScienceandMachineLearningGroup -.-> python/data_visualization("`Data Visualization`") python/FunctionsGroup -.-> python/build_in_functions("`Build-in Functions`") subgraph Lab Skills matplotlib/importing_matplotlib -.-> lab-48629{{"`Projecting Filled Contour Onto a 3D Graph`"}} matplotlib/figures_axes -.-> lab-48629{{"`Projecting Filled Contour Onto a 3D Graph`"}} matplotlib/3d_plots -.-> lab-48629{{"`Projecting Filled Contour Onto a 3D Graph`"}} matplotlib/contour_plots -.-> lab-48629{{"`Projecting Filled Contour Onto a 3D Graph`"}} python/variables_data_types -.-> lab-48629{{"`Projecting Filled Contour Onto a 3D Graph`"}} python/tuples -.-> lab-48629{{"`Projecting Filled Contour Onto a 3D Graph`"}} python/importing_modules -.-> lab-48629{{"`Projecting Filled Contour Onto a 3D Graph`"}} python/using_packages -.-> lab-48629{{"`Projecting Filled Contour Onto a 3D Graph`"}} python/data_collections -.-> lab-48629{{"`Projecting Filled Contour Onto a 3D Graph`"}} python/data_visualization -.-> lab-48629{{"`Projecting Filled Contour Onto a 3D Graph`"}} python/build_in_functions -.-> lab-48629{{"`Projecting Filled Contour Onto a 3D Graph`"}} end

Import Libraries

We will start by importing the necessary libraries.

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d

Create 3D Axes

Next, we will create a 3D axis object using the add_subplot method.

ax = plt.figure().add_subplot(projection='3d')

Create Data

We will use the axes3d.get_test_data method to create sample data for our graph.

X, Y, Z = axes3d.get_test_data(0.05)

Plot the 3D Surface

We will plot the 3D surface using the plot_surface method. We will also set some parameters such as edgecolor, linewidth, and alpha.

ax.plot_surface(X, Y, Z, edgecolor='royalblue', lw=0.5, rstride=8, cstride=8, alpha=0.3)

Project Contour Profiles

We will now project the contour profiles onto the walls of the graph. This is done using the contourf method. We will set the zdir parameter to 'z', 'x', and 'y' to project the contour profiles onto the z, x, and y walls respectively. We will also set the offset parameter to match the appropriate axes limits.

ax.contourf(X, Y, Z, zdir='z', offset=-100, cmap='coolwarm')
ax.contourf(X, Y, Z, zdir='x', offset=-40, cmap='coolwarm')
ax.contourf(X, Y, Z, zdir='y', offset=40, cmap='coolwarm')

Set Graph Limits and Labels

Finally, we will set the limits and labels for the graph axes.

ax.set(xlim=(-40, 40), ylim=(-40, 40), zlim=(-100, 100), xlabel='X', ylabel='Y', zlabel='Z')

Summary

This lab provided a step-by-step guide to creating a 3D surface graph with filled contour profiles projected onto the walls of the graph. We used Python's Matplotlib library to create the graph.

Other Python Tutorials you may like