Bird
Raised Fist0
Matplotlibdata~20 mins

Statistical plot enhancements 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
🎖️
Statistical Plot Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Effect of adding a KDE curve to a histogram
What will be the output of this code snippet that plots a histogram with a KDE curve using matplotlib and seaborn?
Matplotlib
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

data = np.random.normal(loc=0, scale=1, size=1000)

sns.histplot(data, kde=True, color='skyblue')
plt.title('Histogram with KDE curve')
plt.show()
AA histogram with blue bars only, no KDE curve
BA KDE curve only, no histogram bars
CA histogram with blue bars and a smooth KDE curve overlayed in black
DA scatter plot of the data points
Attempts:
2 left
💡 Hint
The 'kde=True' parameter adds a smooth curve over the histogram.
data_output
intermediate
1:30remaining
Number of bins in a histogram with automatic binning
Given this code, how many bins will the histogram have approximately?
Matplotlib
import matplotlib.pyplot as plt
import numpy as np

data = np.random.uniform(0, 10, 500)
plt.hist(data, bins='auto')
plt.show()
AAbout 50 bins
BAbout 20 bins
CAbout 30 bins
DAbout 10 bins
Attempts:
2 left
💡 Hint
The 'auto' binning method tries to find a good number of bins based on data size and distribution.
visualization
advanced
2:30remaining
Customizing boxplot whiskers to show 5th and 95th percentiles
Which code snippet correctly creates a boxplot where whiskers extend to the 5th and 95th percentiles instead of the default 1.5 IQR?
Aplt.boxplot(data, whis=(5, 95))
Bplt.boxplot(data, whis=[0.05, 0.95])
Cplt.boxplot(data, whis=(0.05, 0.95))
Dplt.boxplot(data, whis=[5, 95])
Attempts:
2 left
💡 Hint
The 'whis' parameter accepts percentiles (0-100) when given as a tuple.
🔧 Debug
advanced
2:00remaining
Identify the error in this violin plot code
What error will this code produce when run?
Matplotlib
import matplotlib.pyplot as plt
import numpy as np

data = [np.random.normal(size=100), np.random.normal(loc=2, size=100)]
plt.violinplot(data, positions=[1, 2, 3])
plt.show()
AValueError: positions length does not match data length
BTypeError: data must be a 1D array
CNo error, plot shows correctly
DIndexError: list index out of range
Attempts:
2 left
💡 Hint
Check if the number of positions matches the number of datasets.
🚀 Application
expert
3:00remaining
Enhancing a scatter plot with marginal histograms
Which code snippet correctly creates a scatter plot with histograms on the top and right margins using matplotlib's gridspec?
AUse plt.subplots with gridspec_kw={'width_ratios':[1,4],'height_ratios':[1,4]} and plot scatter on top-left, histograms on bottom-right and top-right
BUse plt.subplots with gridspec_kw={'width_ratios':[1,4],'height_ratios':[4,1]} and plot scatter on top-right, histograms on bottom-left and top-left
CUse plt.subplots with gridspec_kw={'width_ratios':[4,1],'height_ratios':[4,1]} and plot scatter on bottom-right, histograms on top-right and bottom-left
DUse plt.subplots with gridspec_kw={'width_ratios':[4,1],'height_ratios':[1,4]} and plot scatter on bottom-left, histograms on top-left and bottom-right
Attempts:
2 left
💡 Hint
The scatter plot should occupy the larger bottom-left area, histograms on top and right margins.

Practice

(1/5)
1. What is the main purpose of adding a legend to a matplotlib plot?
easy
A. To explain what different colors or markers represent
B. To change the plot's background color
C. To save the plot as an image file
D. To remove grid lines from the plot

Solution

  1. Step 1: Understand what a legend does

    A legend shows labels for different plot elements like colors or markers.
  2. Step 2: Match legend purpose to options

    Only To explain what different colors or markers represent describes explaining plot elements, which is the legend's role.
  3. Final Answer:

    To explain what different colors or markers represent -> Option A
  4. Quick Check:

    Legend = Explain plot elements [OK]
Hint: Legend explains plot symbols and colors [OK]
Common Mistakes:
  • Confusing legend with grid or background settings
  • Thinking legend saves the plot
  • Assuming legend removes plot elements
2. Which of the following is the correct way to add a title to a matplotlib plot?
easy
A. plt.set_title('My Plot')
B. plt.add_title('My Plot')
C. plt.title('My Plot')
D. plt.plot_title('My Plot')

Solution

  1. Step 1: Recall matplotlib title syntax

    The correct function to add a title is plt.title().
  2. Step 2: Check options for correct function name

    Only plt.title('My Plot') uses plt.title('My Plot'), which is correct syntax.
  3. Final Answer:

    plt.title('My Plot') -> Option C
  4. Quick Check:

    Title function = plt.title() [OK]
Hint: Use plt.title() to add plot titles [OK]
Common Mistakes:
  • Using incorrect function names like set_title or add_title
  • Confusing title with label functions
  • Missing parentheses in function call
3. What will the following code display?
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [4, 5, 6], marker='o', color='red')
plt.grid(True)
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.title('Sample Plot')
plt.show()
medium
A. A red line plot with circle markers, grid lines, and labeled axes with a title
B. A blue scatter plot without grid lines or labels
C. A red bar chart with no markers or grid
D. An empty plot with only axis labels

Solution

  1. Step 1: Analyze plot function and parameters

    The code plots points [1,2,3] vs [4,5,6] with red color and circle markers.
  2. Step 2: Check enhancements added

    Grid is enabled, x and y axes are labeled, and a title is set.
  3. Final Answer:

    A red line plot with circle markers, grid lines, and labeled axes with a title -> Option A
  4. Quick Check:

    Plot with markers, grid, labels, title = A red line plot with circle markers, grid lines, and labeled axes with a title [OK]
Hint: Look for markers, colors, grid, labels in code [OK]
Common Mistakes:
  • Confusing plot type (line vs scatter vs bar)
  • Ignoring grid or label commands
  • Assuming default colors or no markers
4. Identify the error in this code snippet that tries to add a legend:
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], label='Line 1')
plt.legend()
plt.show()
medium
A. The plot function is missing y-values
B. The legend function is called before plot
C. The label parameter is invalid in plot
D. There is no error; the code runs correctly

Solution

  1. Step 1: Check plot function parameters

    The plot call has only one list, so it treats it as y-values with x as indices 0,1,2.
  2. Step 2: Understand matplotlib behavior

    This is valid syntax; it plots y-values against default x-values. So no error here.
  3. Step 3: Re-examine options carefully

    The plot function is missing y-values says missing y-values, but y-values are given. The legend function is called before plot is wrong order. The label parameter is invalid in plot label is valid. There is no error; the code runs correctly says no error.
  4. Final Answer:

    There is no error; the code runs correctly -> Option D
  5. Quick Check:

    Code runs fine with legend after plot [OK]
Hint: Check if plot syntax matches matplotlib docs [OK]
Common Mistakes:
  • Assuming single list plot is invalid
  • Thinking legend must come before plot
  • Believing label is not accepted in plot
5. You want to create a scatter plot with blue triangles, add grid lines, and label axes as 'Height' and 'Weight'. Which code snippet correctly does this?
hard
A. plt.scatter(x, y, marker='s', color='red') plt.grid(True) plt.xlabel('Weight') plt.ylabel('Height')
B. plt.scatter(x, y, marker='^', color='blue') plt.grid(True) plt.xlabel('Height') plt.ylabel('Weight')
C. plt.plot(x, y, marker='o', color='green') plt.grid(False) plt.xlabel('Weight') plt.ylabel('Height')
D. plt.plot(x, y, marker='^', color='blue') plt.grid(True) plt.xlabel('Height') plt.ylabel('Weight')

Solution

  1. Step 1: Identify scatter plot with blue triangles

    Use plt.scatter() with marker='^' and color='blue'.
  2. Step 2: Check grid and axis labels

    Grid must be enabled with plt.grid(True), and axes labeled 'Height' and 'Weight' correctly.
  3. Step 3: Match code snippet to requirements

    plt.scatter(x, y, marker='^', color='blue') plt.grid(True) plt.xlabel('Height') plt.ylabel('Weight') matches all requirements exactly.
  4. Final Answer:

    plt.scatter(x, y, marker='^', color='blue') plt.grid(True) plt.xlabel('Height') plt.ylabel('Weight') -> Option B
  5. Quick Check:

    Scatter + blue triangles + grid + correct labels = plt.scatter(x, y, marker='^', color='blue') plt.grid(True) plt.xlabel('Height') plt.ylabel('Weight') [OK]
Hint: Scatter uses plt.scatter(), triangles marker='^', grid True [OK]
Common Mistakes:
  • Using plt.plot instead of plt.scatter for scatter plot
  • Wrong marker symbol for triangles
  • Swapping x and y axis labels
  • Forgetting to enable grid lines