Bird
Raised Fist0
Matplotlibdata~20 mins

Viewing angle control in Matplotlib - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Viewing Angle Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the elevation angle after this code runs?
Consider this code that sets the elevation angle of a 3D plot. What will be the elevation angle printed?
Matplotlib
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.view_init(elev=30, azim=45)
elev = ax.elev
print(elev)
ANone
B45
C0
D30
Attempts:
2 left
💡 Hint
The elev parameter sets the elevation angle in degrees.
data_output
intermediate
2:00remaining
What is the azimuth angle after setting view_init?
After running this code, what is the azimuth angle stored in ax.azim?
Matplotlib
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.view_init(elev=10, azim=120)
azim = ax.azim
print(azim)
A120
BNone
C0
D10
Attempts:
2 left
💡 Hint
The azim parameter controls the azimuth angle in degrees.
visualization
advanced
3:00remaining
Which option shows the correct azimuth and elevation for this 3D plot?
This code creates a 3D plot and sets the viewing angle. Which option correctly describes the viewing angles used?
Matplotlib
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X = np.linspace(-5, 5, 100)
Y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(X, Y)
Z = np.sin(np.sqrt(X**2 + Y**2))
ax.plot_surface(X, Y, Z, cmap='viridis')
ax.view_init(elev=60, azim=30)
plt.show()
AElevation 30°, Azimuth 60°
BElevation 0°, Azimuth 0°
CElevation 60°, Azimuth 30°
DElevation 45°, Azimuth 45°
Attempts:
2 left
💡 Hint
Check the parameters passed to view_init(elev=..., azim=...).
🔧 Debug
advanced
2:00remaining
What error does this code raise?
This code tries to set the viewing angle but has a mistake. What error will it raise?
Matplotlib
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.view_init(elevation=45, azimuth=90)
ATypeError: view_init() got an unexpected keyword argument 'elevation'
BAttributeError: 'Axes3D' object has no attribute 'view_init'
CValueError: Elevation angle must be between 0 and 90
DNo error, runs successfully
Attempts:
2 left
💡 Hint
Check the parameter names for view_init method.
🚀 Application
expert
3:00remaining
How to programmatically rotate a 3D plot by 10 degrees azimuth each frame?
You want to create an animation that rotates a 3D plot by increasing the azimuth angle by 10 degrees every frame, starting from 0°. Which code snippet correctly updates the azimuth angle inside a loop?
Matplotlib
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
X = np.linspace(-5, 5, 100)
Y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(X, Y)
Z = np.sin(np.sqrt(X**2 + Y**2))
ax.plot_surface(X, Y, Z, cmap='coolwarm')
for i in range(0, 360, 10):
    # Update viewing angle here
    pass
    plt.pause(0.1)
Aax.view_init(elev=i, azim=30)
Bax.view_init(elev=30, azim=i)
Cax.view_init(elev=0, azim=i*10)
Dax.view_init(elev=30, azim=i*10)
Attempts:
2 left
💡 Hint
The azimuth angle changes by i degrees each loop, elevation stays fixed.

Practice

(1/5)
1. What does the ax.view_init(elev, azim) function do in matplotlib 3D plots?
easy
A. It sets the vertical and horizontal viewing angles of the 3D plot.
B. It changes the color of the 3D plot.
C. It adds labels to the axes of the 3D plot.
D. It saves the 3D plot as an image file.

Solution

  1. Step 1: Understand the function purpose

    The ax.view_init function is used to control the viewing angle of 3D plots in matplotlib.
  2. Step 2: Identify parameters meaning

    The parameters elev and azim set the vertical and horizontal angles respectively.
  3. Final Answer:

    It sets the vertical and horizontal viewing angles of the 3D plot. -> Option A
  4. Quick Check:

    Viewing angle control = ax.view_init(elev, azim) [OK]
Hint: Remember elev = vertical, azim = horizontal angles [OK]
Common Mistakes:
  • Confusing view_init with color or label functions
  • Mixing up elev and azim parameters
  • Thinking it saves the plot instead of changing view
2. Which of the following is the correct syntax to set the elevation to 30 and azimuth to 45 in a matplotlib 3D plot?
easy
A. ax.view_init(azim=30, elev=45)
B. ax.view_init(elev=45, azim=30)
C. ax.view_init(45, 30)
D. ax.view_init(30, 45)

Solution

  1. Step 1: Recall parameter order in view_init

    The view_init method takes elev first, then azim.
  2. Step 2: Match values to parameters

    Elevation should be 30 and azimuth 45, so ax.view_init(30, 45) is correct.
  3. Final Answer:

    ax.view_init(30, 45) -> Option D
  4. Quick Check:

    elev=30, azim=45 means ax.view_init(30, 45) [OK]
Hint: Remember order: elev first, then azim [OK]
Common Mistakes:
  • Swapping elev and azim values
  • Using keyword arguments incorrectly
  • Passing azim before elev
3. What will be the effect of this code snippet on the 3D plot's view?
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.view_init(elev=90, azim=0)
plt.show()
medium
A. The plot is viewed from the side at 90 degrees azimuth.
B. The plot is viewed from directly above (top-down view).
C. The plot is viewed from the front with default angles.
D. The plot will raise an error due to invalid angles.

Solution

  1. Step 1: Analyze elev=90 effect

    Elevation of 90 degrees means the camera is directly above the plot looking down.
  2. Step 2: Analyze azim=0 effect

    Azimuth 0 means no horizontal rotation, so the view is straight down from above.
  3. Final Answer:

    The plot is viewed from directly above (top-down view). -> Option B
  4. Quick Check:

    elev=90 means top-down view [OK]
Hint: elev=90 means looking straight down [OK]
Common Mistakes:
  • Thinking azim=0 changes vertical angle
  • Assuming default view instead of top-down
  • Believing this causes an error
4. Identify the error in this code that tries to set the viewing angle:
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.view_init(azim=45, elev=30)
plt.show()
medium
A. The projection='3d' is missing in add_subplot.
B. The plt.show() is missing parentheses.
C. The parameters elev and azim are swapped; elev must come first without keywords.
D. There is no error; the code runs correctly.

Solution

  1. Step 1: Check parameter usage in view_init

    The view_init method does not accept keyword arguments for elev and azim in this order; it expects positional arguments.
  2. Step 2: Identify correct parameter order

    Correct usage is ax.view_init(30, 45) where elev=30 and azim=45 as positional arguments.
  3. Final Answer:

    The parameters elev and azim are swapped; elev must come first without keywords. -> Option C
  4. Quick Check:

    view_init requires positional elev, azim [OK]
Hint: Use positional args: elev first, azim second [OK]
Common Mistakes:
  • Using keyword arguments in wrong order
  • Omitting projection='3d' (not the error here)
  • Forgetting plt.show() parentheses
5. You want to create a 3D scatter plot and set the view so the plot looks rotated 45 degrees horizontally and tilted 30 degrees vertically. Which code snippet correctly achieves this and also labels the axes?
hard
A. fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter([1,2,3], [4,5,6], [7,8,9]) ax.view_init(30, 45) ax.set_xlabel('X axis') ax.set_ylabel('Y axis') ax.set_zlabel('Z axis') plt.show()
B. fig = plt.figure() ax = fig.add_subplot(111) ax.scatter([1,2,3], [4,5,6], [7,8,9]) ax.view_init(45, 30) plt.show()
C. fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter([1,2,3], [4,5,6], [7,8,9]) ax.view_init(elev=45, azim=30) plt.show()
D. fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter([1,2,3], [4,5,6], [7,8,9]) ax.view_init(45, 30) ax.set_xlabel('X axis') ax.set_ylabel('Y axis') ax.set_zlabel('Z axis') plt.show()

Solution

  1. Step 1: Check subplot creation for 3D

    Only options A, C, and D use projection='3d', which is required for 3D plots.
  2. Step 2: Verify view_init parameters

    The question wants elevation 30 and azimuth 45, so ax.view_init(30, 45) is correct. fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter([1,2,3], [4,5,6], [7,8,9]) ax.view_init(30, 45) ax.set_xlabel('X axis') ax.set_ylabel('Y axis') ax.set_zlabel('Z axis') plt.show() matches this.
  3. Step 3: Confirm axis labels are set

    fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter([1,2,3], [4,5,6], [7,8,9]) ax.view_init(30, 45) ax.set_xlabel('X axis') ax.set_ylabel('Y axis') ax.set_zlabel('Z axis') plt.show() sets all three axis labels correctly with set_xlabel, set_ylabel, and set_zlabel.
  4. Final Answer:

    Option A correctly sets view angles and labels axes. -> Option A
  5. Quick Check:

    3D plot + view_init(30,45) + axis labels = fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter([1,2,3], [4,5,6], [7,8,9]) ax.view_init(30, 45) ax.set_xlabel('X axis') ax.set_ylabel('Y axis') ax.set_zlabel('Z axis') plt.show() [OK]
Hint: Use projection='3d', view_init(30,45), then label axes [OK]
Common Mistakes:
  • Missing projection='3d' for 3D plots
  • Swapping elev and azim values
  • Not labeling all three axes