3D Plotting

Back

Loading concept...

🎢 Welcome to the 3D Dimension!

Your Journey into Matplotlib’s 3D World

Imagine you’re an architect building a model of a roller coaster. You can’t show the twists, loops, and heights on a flat piece of paper—you need three dimensions to bring it to life!

That’s exactly what 3D plotting does. It lets your data pop out of the screen like a video game world.


🧱 The Universal Analogy: Building with LEGOs

Think of 3D plotting like building with LEGOs:

  • The X-axis is how far LEFT or RIGHT you place your brick
  • The Y-axis is how far FORWARD or BACKWARD
  • The Z-axis is how HIGH you stack

Every point in 3D space needs all three coordinates—just like placing a LEGO brick exactly where you want it!


🎬 Chapter 1: Setting Up Your 3D Stage

The 3D Axes Setup

Before you can build anything in 3D, you need a special canvas that understands three dimensions.

Think of it like this: A regular piece of paper is flat (2D). But a cardboard box? That’s 3D! We need to tell Python: “Hey, give me a box to draw in, not just paper!”

The Magic Words

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

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

What’s happening here?

  1. plt.figure() → Creates an empty frame (like a picture frame)
  2. projection='3d' → The magic spell! This turns flat paper into a 3D box
  3. ax → Your 3D drawing tool is ready!
graph TD A["Import Libraries"] --> B["Create Figure"] B --> C["Add 3D Projection"] C --> D["🎨 Ready to Draw!"]

📈 Chapter 2: Drawing Lines in 3D

3D Line Plot

Remember drawing a line on paper? In 3D, your line can fly through space like a paper airplane!

Real-world example: The path of a bee flying from flower to flower goes up, down, left, right, forward, and back!

import numpy as np

# Create time points
t = np.linspace(0, 4*np.pi, 100)

# The bee's path
x = np.sin(t)      # Wiggle left-right
y = np.cos(t)      # Wiggle forward-back
z = t              # Go higher and higher

ax.plot(x, y, z, label='Bee Path')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()

What you’ll see: A beautiful spiral rising up—like a spring or a spiral staircase! 🌀

Key Function: ax.plot(x, y, z)

Parameter What it does
x, y, z The 3 coordinates
label Name for legend
color Line color
linewidth How thick

⚫ Chapter 3: Scatter Points in Space

3D Scatter Plot

Instead of connecting dots with lines, what if we just sprinkle dots in 3D space? Like stars in the night sky!

Real-world example: Imagine plotting where every balloon is floating at a birthday party—each one has a position and height!

# Random balloon positions
n = 50
x = np.random.rand(n) * 10
y = np.random.rand(n) * 10
z = np.random.rand(n) * 10
colors = np.random.rand(n)

ax.scatter(x, y, z, c=colors, s=50)
ax.set_title('Balloons at the Party!')
plt.show()

Making It Pop! 🎈

# Size can change too!
sizes = np.random.rand(n) * 200

ax.scatter(x, y, z,
           c=colors,      # Color by value
           s=sizes,       # Size varies
           alpha=0.6)     # Slightly see-through

Pro tip: Use c for color and s for size to show MORE information in the same plot!


📊 Chapter 4: Bars That Stand Tall

3D Bar Plot

Regular bar charts lie flat. But 3D bars? They stand up like buildings in a city skyline!

Real-world example: Imagine a city where each building’s height shows how many people live there, and its position shows which neighborhood it’s in.

# Data setup
x = [1, 2, 3, 4]
y = [1, 2, 3, 4]
z = [0, 0, 0, 0]  # Bars start at ground
dx = dy = 0.5     # Bar width
dz = [5, 10, 7, 3]  # Bar heights!

ax.bar3d(x, y, z, dx, dy, dz,
         color='skyblue',
         edgecolor='navy')
ax.set_title('City Skyline')
plt.show()

Understanding bar3d Parameters

graph TD A["bar3d Parameters"] --> B["x, y, z = Start Position"] A --> C["dx, dy = Width & Depth"] A --> D["dz = HEIGHT ⬆️"]
Parameter Think of it as…
x, y Where to place the building
z Ground level (usually 0)
dx, dy Building footprint size
dz How tall!

🏔️ Chapter 5: Mountains and Valleys

3D Surface Plot

This is where things get really cool! A surface plot creates a smooth, continuous sheet—like a bedsheet draped over lumpy pillows, or real mountain terrain!

Real-world example: Weather maps showing temperature across a region, where “hills” are hot spots and “valleys” are cool areas.

# Create a grid
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
X, Y = np.meshgrid(x, y)

# The mountain formula!
Z = np.sin(np.sqrt(X**2 + Y**2))

# Draw the surface
surf = ax.plot_surface(X, Y, Z,
                       cmap='viridis')
plt.colorbar(surf)
plt.show()

What’s meshgrid? 🤔

Think of it like drawing a checkerboard, then asking “what’s the height at each square?”

Before meshgrid:     After meshgrid:
x = [1, 2, 3]        Every combo!
y = [a, b, c]        (1,a) (2,a) (3,a)
                     (1,b) (2,b) (3,b)
                     (1,c) (2,c) (3,c)

Make It Beautiful! 🎨

ax.plot_surface(X, Y, Z,
                cmap='coolwarm',  # Blue=low, Red=high
                alpha=0.8)        # Slightly transparent

Popular colormaps: viridis, plasma, coolwarm, terrain


🕸️ Chapter 6: See-Through Structures

3D Wireframe Plot

What if you could see through the mountain? A wireframe is like the skeleton of a surface—just the lines, no filling!

Real-world example: Like a 3D model made of wire coat hangers, or the frame of a tent before you put the fabric on.

ax.plot_wireframe(X, Y, Z,
                  color='purple',
                  linewidth=0.5)
ax.set_title('Mountain Skeleton')
plt.show()

When to Use Wireframe vs Surface?

Use Wireframe when… Use Surface when…
You need to see through You want solid colors
Showing structure Showing data values
Less visual clutter Maximum impact
Understanding shape Presentation

Customize Your Wireframe

ax.plot_wireframe(X, Y, Z,
                  rstride=5,    # Row step
                  cstride=5,    # Column step
                  color='teal')

Stride controls density: Higher stride = fewer lines = cleaner look!


🎯 Quick Reference: All 3D Plot Types

graph TD A["3D Plotting"] --> B["Line Plot"] A --> C["Scatter Plot"] A --> D["Bar Plot"] A --> E["Surface Plot"] A --> F["Wireframe Plot"] B --> G["Paths & Trajectories"] C --> H["Points in Space"] D --> I["Comparing Categories"] E --> J["Continuous Data"] F --> K["Transparent Structures"]

💡 Golden Tips for 3D Success

1. Always Label Your Axes!

ax.set_xlabel('Time')
ax.set_ylabel('Distance')
ax.set_zlabel('Height')

2. Rotate Your View

ax.view_init(elev=30, azim=45)
# elev = looking from above/below
# azim = spinning around

3. Add a Title

ax.set_title('My Amazing 3D Plot!')

🚀 Your 3D Toolkit Summary

Plot Type Function Best For
Line ax.plot(x,y,z) Paths, trajectories
Scatter ax.scatter(x,y,z) Individual points
Bar ax.bar3d(...) Categories comparison
Surface ax.plot_surface(...) Smooth continuous data
Wireframe ax.plot_wireframe(...) Structure visualization

🎉 You Did It!

You’ve just unlocked the power to visualize data in THREE DIMENSIONS!

Remember:

  • 🧱 Every 3D plot needs projection='3d'
  • 📍 Every point needs X, Y, and Z
  • 🎨 Use colors and sizes to show extra information
  • 🔄 Rotate your view to find the best angle

Now go create some amazing 3D visualizations! Your data is about to jump off the screen! 🚀

Loading story...

Story - Premium Content

Please sign in to view this story and start learning.

Upgrade to Premium to unlock full access to all stories.

Stay Tuned!

Story is coming soon.

Story Preview

Story - Premium Content

Please sign in to view this concept and start learning.

Upgrade to Premium to unlock full access to all content.