Bird
Raised Fist0
Matplotlibdata~20 mins

Basic histogram with plt.hist in Matplotlib - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Histogram Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Histogram bin count output
What is the output of the following code snippet that creates a histogram and prints the counts of each bin?
Matplotlib
import matplotlib.pyplot as plt
import numpy as np

data = np.array([1, 2, 2, 3, 4, 5, 5, 5, 6])
counts, bins, patches = plt.hist(data, bins=5)
plt.close()
print(counts)
A[1. 2. 1. 1. 4.]
B[1. 2. 3. 2. 1.]
C[2. 1. 3. 2. 1.]
D[1. 3. 2. 2. 1.]
Attempts:
2 left
💡 Hint
Remember that bins divide the data range into equal parts and counts show how many data points fall into each bin.
❓ data_output
intermediate
1:30remaining
Number of bins in histogram
How many bins will the histogram have after running this code?
Matplotlib
import matplotlib.pyplot as plt
import numpy as np

data = np.random.randint(0, 100, size=50)
plt.hist(data, bins=10)
plt.close()
print(len(plt.hist(data, bins=10)[0]))
A9
B50
C10
D11
Attempts:
2 left
💡 Hint
The bins parameter controls how many bins the histogram has.
❓ visualization
advanced
2:30remaining
Effect of bin size on histogram shape
Which histogram plot best represents the data distribution when using 3 bins versus 15 bins for the same dataset?
Matplotlib
import matplotlib.pyplot as plt
import numpy as np

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

plt.subplot(1, 2, 1)
plt.hist(data, bins=3)
plt.title('3 bins')

plt.subplot(1, 2, 2)
plt.hist(data, bins=15)
plt.title('15 bins')

plt.tight_layout()
plt.show()
A3 bins histogram shows many peaks; 15 bins histogram is very smooth and flat.
B3 bins histogram is very smooth and general; 15 bins histogram shows more detail and peaks.
CBoth histograms look identical regardless of bin count.
D3 bins histogram has more bars than 15 bins histogram.
Attempts:
2 left
💡 Hint
More bins mean more detail but can be noisy; fewer bins mean smoother but less detail.
🧠 Conceptual
advanced
1:30remaining
Understanding histogram bin edges
Given the code below, what is the length of the bins array returned by plt.hist when bins=7?
Matplotlib
import matplotlib.pyplot as plt
import numpy as np

data = np.arange(14)
counts, bins, patches = plt.hist(data, bins=7)
plt.close()
print(len(bins))
A8
B7
C6
D14
Attempts:
2 left
💡 Hint
Bins array contains the edges of each bin, so it has one more element than the number of bins.
🔧 Debug
expert
2:00remaining
Identify the error in histogram plotting code
What error will this code produce when run?
Matplotlib
import matplotlib.pyplot as plt
import numpy as np

data = np.array([1, 2, 3, 4, 5])
plt.hist(data, bins='five')
plt.show()
ATypeError: 'str' object cannot be interpreted as an integer
BSyntaxError: invalid syntax
CNo error, histogram plots successfully
DValueError: bins must be a positive integer or sequence
Attempts:
2 left
💡 Hint
The bins parameter expects an integer or a sequence of bin edges, not a string.

Practice

(1/5)
1. What does the plt.hist() function do in matplotlib?
easy
A. It creates a scatter plot of two variables.
B. It plots a line graph connecting data points.
C. It creates a histogram to show data frequency distribution.
D. It generates a pie chart to show proportions.

Solution

  1. Step 1: Understand the purpose of plt.hist()

    The function plt.hist() groups data into bins and shows how often values fall into each bin.
  2. Step 2: Compare with other plot types

    Line graphs connect points, scatter plots show points, and pie charts show parts of a whole, which are different from histograms.
  3. Final Answer:

    It creates a histogram to show data frequency distribution. -> Option C
  4. Quick Check:

    Histogram = frequency bars [OK]
Hint: Histograms show frequency counts in bars [OK]
Common Mistakes:
  • Confusing histogram with line plot
  • Thinking plt.hist() creates scatter plots
  • Mixing histogram with pie chart
2. Which of the following is the correct way to create a histogram of data stored in a list named data using matplotlib?
easy
A. plt.histogram(data); plt.show()
B. plt.plot.hist(data); plt.show()
C. plt.bar(data); plt.show()
D. plt.hist(data); plt.show()

Solution

  1. Step 1: Recall the correct function name

    The correct function to create a histogram is plt.hist(), not plt.plot.hist() or plt.histogram().
  2. Step 2: Confirm usage with plt.show()

    After plotting, plt.show() displays the figure. Using plt.bar() creates bar charts, not histograms.
  3. Final Answer:

    plt.hist(data); plt.show() -> Option D
  4. Quick Check:

    Use plt.hist() for histograms [OK]
Hint: Use plt.hist() to plot histograms, then plt.show() [OK]
Common Mistakes:
  • Using plt.plot.hist() which is invalid
  • Calling plt.histogram() which doesn't exist
  • Using plt.bar() instead of plt.hist()
3. What will be the output of the following code?
import matplotlib.pyplot as plt

values = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
plt.hist(values, bins=4)
plt.show()
medium
A. A histogram with 4 bars showing frequencies: 1, 2, 3, and 4
B. A histogram with 10 bars, one for each value
C. A line plot connecting the values 1 to 4
D. An error because bins must be greater than 4

Solution

  1. Step 1: Understand bins parameter

    Setting bins=4 divides the data range into 4 intervals (bins).
  2. Step 2: Count frequencies in each bin

    The values 1, 2, 3, and 4 fall into these bins with frequencies 1, 2, 3, and 4 respectively, so the histogram shows 4 bars with these heights.
  3. Final Answer:

    A histogram with 4 bars showing frequencies: 1, 2, 3, and 4 -> Option A
  4. Quick Check:

    Bins split data; bars show counts [OK]
Hint: Bins split data; bar height = count in bin [OK]
Common Mistakes:
  • Thinking bins=4 means 10 bars
  • Confusing histogram with line plot
  • Assuming bins must be greater than data length
4. Identify the error in this code snippet that tries to plot a histogram:
import matplotlib.pyplot as plt

values = [5, 7, 8, 5, 6]
plt.hist(values, bins='five')
plt.show()
medium
A. plt.show() is missing and needed to display the plot.
B. The bins parameter should be an integer, not a string.
C. plt.hist() requires a color argument.
D. The values list contains invalid data types.

Solution

  1. Step 1: Check bins parameter type

    The bins argument must be an integer or sequence of numbers, not a string like 'five'.
  2. Step 2: Verify other parts

    The data list is valid, color is optional, and plt.show() is present, so no other errors.
  3. Final Answer:

    The bins parameter should be an integer, not a string. -> Option B
  4. Quick Check:

    Bins must be int or list, not string [OK]
Hint: Bins must be number, not text [OK]
Common Mistakes:
  • Passing bins as a string instead of integer
  • Thinking color is required
  • Forgetting plt.show() (not the case here)
5. You have a dataset of exam scores ranging from 0 to 100. You want to create a histogram with 5 equal-width bins and color the bars blue. Which code snippet correctly achieves this?
hard
A. plt.hist(scores, bins=5, color='blue'); plt.show()
B. plt.hist(scores, bins=[0,20,50,70,90,100], color='blue'); plt.show()
C. plt.hist(scores, bins=5, colors='blue'); plt.show()
D. plt.hist(scores, bins=5, color=blue); plt.show()

Solution

  1. Step 1: Use bins=integer for equal-width

    bins=5 automatically divides the range (0-100) into 5 equal-width bins of 20 units each: [0-20, 20-40, 40-60, 60-80, 80-100].
  2. Step 2: Color the bars blue

    The color='blue' parameter sets the bar color correctly.
  3. Step 3: Eliminate distractors

    B specifies explicit bins [0,20,50,70,90,100] with unequal widths (20,30,20,20,10); C uses invalid 'colors'; D has unquoted 'blue' causing NameError.
  4. Final Answer:

    plt.hist(scores, bins=5, color='blue'); plt.show() -> Option A
  5. Quick Check:

    bins=5 (equal width) + color='blue' [OK]
Hint: bins=5 for equal-width over data range, color='blue' [OK]
Common Mistakes:
  • Using explicit bins with unequal widths
  • Using 'colors' instead of 'color'
  • Using color=blue without quotes
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard