Bird
Raised Fist0
Matplotlibdata~20 mins

Memory management with large figures 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
🎖️
Memory Mastery with Large Figures
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the memory usage behavior of this matplotlib code?

Consider the following Python code that creates and closes a large figure repeatedly. What will be the output regarding memory usage?

Matplotlib
import matplotlib.pyplot as plt
import tracemalloc

tracemalloc.start()

for i in range(3):
    fig, ax = plt.subplots(figsize=(20, 20))
    ax.plot(range(100000))
    plt.close(fig)

current, peak = tracemalloc.get_traced_memory()
print(f"Current memory usage: {current / 10**6:.2f} MB")
print(f"Peak memory usage: {peak / 10**6:.2f} MB")
tracemalloc.stop()
ACurrent memory usage: less than 10 MB; Peak memory usage: around 50 MB
BCurrent memory usage: more than 100 MB; Peak memory usage: more than 150 MB
CCurrent memory usage: less than 10 MB; Peak memory usage: less than 10 MB
DCurrent memory usage: more than 100 MB; Peak memory usage: less than 10 MB
Attempts:
2 left
💡 Hint

Think about how closing figures affects memory in matplotlib.

🧠 Conceptual
intermediate
1:30remaining
Why is it important to close figures in matplotlib when working with large data?

When plotting large datasets repeatedly, why should you close figures explicitly in matplotlib?

ATo automatically save the figures to disk
BTo free up memory and avoid memory leaks that slow down the program
CTo make the plots display faster on the screen
DTo reduce the size of the saved image files
Attempts:
2 left
💡 Hint

Think about what happens if figures stay open in memory.

🔧 Debug
advanced
2:00remaining
Identify the cause of increasing memory usage in this plotting loop

Look at this code snippet that plots data in a loop. Memory usage increases after each iteration. What is the cause?

Matplotlib
import matplotlib.pyplot as plt

for i in range(5):
    fig, ax = plt.subplots()
    ax.plot(range(10000))
    # Missing plt.close(fig)
    print(f"Iteration {i} done")
AFigures are not closed, so memory accumulates with each iteration
BThe plot data is too large to fit in memory
CThe loop variable i is not used inside the loop
DThe print statement causes memory leaks
Attempts:
2 left
💡 Hint

Think about what happens to figures that are not closed.

data_output
advanced
1:30remaining
What is the number of open figures after this code runs?

After running the following code, how many figures remain open in matplotlib?

Matplotlib
import matplotlib.pyplot as plt

for _ in range(3):
    plt.figure()
plt.close(1)
plt.close(3)
A2
B0
C3
D1
Attempts:
2 left
💡 Hint

Figure numbers start at 1 and increase with each new figure.

🚀 Application
expert
2:30remaining
Optimize memory usage when generating many large plots

You need to generate 100 large plots in a script. Which approach best manages memory to avoid crashes?

ACreate all 100 plots first, then save and close them all at the end
BUse plt.show() after each plot to clear memory automatically
CCreate each plot with plt.subplots(), save it, then call plt.close() on the figure before next iteration
DCreate each plot and save it without closing figures, relying on Python garbage collection
Attempts:
2 left
💡 Hint

Think about when memory is freed during plotting.

Practice

(1/5)
1. Why is it important to use plt.close() after creating large figures in matplotlib?
easy
A. To change the color of the figure
B. To free up memory and prevent slowing down the computer
C. To save the figure automatically
D. To increase the size of the figure

Solution

  1. Step 1: Understand memory use by large figures

    Large figures use a lot of computer memory which can slow down the system if not managed.
  2. Step 2: Role of plt.close()

    Using plt.close() frees the memory used by the figure after it is shown or saved.
  3. Final Answer:

    To free up memory and prevent slowing down the computer -> Option B
  4. Quick Check:

    Memory management = Free memory [OK]
Hint: Always close large figures to save memory after use [OK]
Common Mistakes:
  • Thinking plt.close() saves the figure
  • Believing it changes figure appearance
  • Ignoring memory impact of many open figures
2. Which of the following is the correct syntax to close a figure in matplotlib?
easy
A. plt.closeFigure()
B. plt.close_figure()
C. plt.closeFig()
D. plt.close()

Solution

  1. Step 1: Recall matplotlib function names

    The official function to close a figure is plt.close().
  2. Step 2: Check other options

    Other options like plt.close_figure() or plt.closeFig() do not exist in matplotlib.
  3. Final Answer:

    plt.close() -> Option D
  4. Quick Check:

    Correct function name = plt.close() [OK]
Hint: Use exact function names from matplotlib docs [OK]
Common Mistakes:
  • Adding extra words to function name
  • Using camelCase instead of snake_case
  • Confusing with save or show functions
3. What will be the output of the following code snippet?
import matplotlib.pyplot as plt
for i in range(3):
    fig = plt.figure()
    plt.plot([1, 2, 3], [i, i+1, i+2])
plt.show()
medium
A. Three plots will be shown and memory will be freed automatically
B. Only one plot will be shown, others are overwritten
C. Three plots will be shown but memory is not freed, causing high usage
D. Code will raise an error because plt.close() is missing

Solution

  1. Step 1: Analyze the loop creating figures

    The loop creates 3 separate figures and plots on each without closing them.
  2. Step 2: Understand memory impact

    Since plt.close() is not called, all figures stay in memory, increasing usage.
  3. Final Answer:

    Three plots will be shown but memory is not freed, causing high usage -> Option C
  4. Quick Check:

    Figures open without close = high memory [OK]
Hint: Without plt.close(), memory stays used after plotting [OK]
Common Mistakes:
  • Assuming memory frees automatically after plt.show()
  • Thinking only one plot appears
  • Expecting an error without plt.close()
4. Identify the error in this code that creates multiple large figures:
import matplotlib.pyplot as plt
for i in range(5):
    fig = plt.figure(figsize=(10,8))
    plt.plot([1,2,3], [i,i+1,i+2])
    plt.show()
medium
A. Missing plt.close() to free memory after each figure
B. plt.show() should be outside the loop
C. Figure size is too small for large data
D. Plot data lists have different lengths

Solution

  1. Step 1: Check memory management in loop

    The code creates large figures repeatedly but never closes them, causing memory buildup.
  2. Step 2: Identify missing memory freeing step

    Adding plt.close() after plt.show() frees memory for each figure.
  3. Final Answer:

    Missing plt.close() to free memory after each figure -> Option A
  4. Quick Check:

    Close figures in loops to avoid memory leaks [OK]
Hint: Always close figures inside loops after showing [OK]
Common Mistakes:
  • Moving plt.show() outside loop without closing figures
  • Changing figure size instead of closing
  • Ignoring memory issues with many figures
5. You need to generate 100 large plots in a script without running out of memory. Which approach is best to manage memory efficiently?
hard
A. Create each figure, plot data, save it, then call plt.close() before next
B. Create all 100 figures first, then plot and save them all together
C. Plot all data on one figure without closing it
D. Use plt.show() after all figures are created without closing

Solution

  1. Step 1: Understand memory use when creating many figures

    Creating many large figures without closing them uses too much memory and slows the system.
  2. Step 2: Best practice for memory management

    Creating, saving, then closing each figure before the next frees memory and avoids overload.
  3. Final Answer:

    Create each figure, plot data, save it, then call plt.close() before next -> Option A
  4. Quick Check:

    Close each figure after saving to save memory [OK]
Hint: Save and close each figure before next to avoid memory issues [OK]
Common Mistakes:
  • Creating all figures before saving causes memory overload
  • Not closing figures after plotting
  • Plotting all data on one figure when separate plots needed