Bird
Raised Fist0
Matplotlibdata~5 mins

Basic histogram with plt.hist in Matplotlib - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Basic histogram with plt.hist
O(n)
Understanding Time Complexity

We want to understand how the time it takes to create a histogram changes as we add more data points.

How does the work grow when the input data gets bigger?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

import matplotlib.pyplot as plt
import numpy as np

data = np.random.randn(1000)
plt.hist(data, bins=30)
plt.show()

This code creates a histogram of 1000 random numbers divided into 30 bins.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Counting how many data points fall into each bin.
  • How many times: Each of the n data points is checked once to find its bin.
How Execution Grows With Input

As the number of data points increases, the time to count them into bins grows roughly in direct proportion.

Input Size (n)Approx. Operations
10About 10 checks
100About 100 checks
1000About 1000 checks

Pattern observation: Doubling the data roughly doubles the work.

Final Time Complexity

Time Complexity: O(n)

This means the time to build the histogram grows linearly with the number of data points.

Common Mistake

[X] Wrong: "The number of bins affects the time complexity a lot."

[OK] Correct: The bins are usually fixed and small compared to data size, so the main work depends on how many data points we have, not the bins.

Interview Connect

Understanding how data size affects plotting helps you explain performance clearly and shows you can think about efficiency in real tasks.

Self-Check

"What if we increased the number of bins to be the same as the number of data points? How would the time complexity change?"

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