Bird
Raised Fist0
Matplotlibdata~10 mins

Basic pie chart with plt.pie in Matplotlib - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Basic pie chart with plt.pie
Prepare data values
↓
Call plt.pie() with data
↓
Matplotlib calculates slice sizes
↓
Draw pie slices on plot
↓
Display pie chart with plt.show()
This flow shows how data is prepared, passed to plt.pie(), which calculates and draws the pie slices, then displays the chart.
Execution Sample
Matplotlib
import matplotlib.pyplot as plt
sizes = [30, 20, 50]
plt.pie(sizes)
plt.show()
This code draws a pie chart with three slices sized 30, 20, and 50.
Execution Table
StepActionInput DataCalculationOutput/Plot
1Prepare data[30, 20, 50]Sum = 100Data ready for pie chart
2Call plt.pie()[30, 20, 50]Calculate slice angles: 108°, 72°, 180°Slices sized accordingly
3Draw slicesAngles from step 2Draw arcs for each slicePie chart with 3 slices drawn
4Show plotPie chart objectRender chart windowPie chart displayed on screen
5End--Execution complete
💡 All slices drawn and chart displayed, execution ends.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3Final
sizesundefined[30, 20, 50][30, 20, 50][30, 20, 50][30, 20, 50]
sum_sizesundefined100100100100
slice_anglesundefinedundefined[108°, 72°, 180°][108°, 72°, 180°][108°, 72°, 180°]
Key Moments - 3 Insights
Why do the slice angles add up to 360 degrees?
Because plt.pie() converts data values into angles proportional to their share of the total sum, and a full circle is 360 degrees. See execution_table step 2.
What happens if the data values do not sum to 100?
plt.pie() automatically calculates the sum and scales slices accordingly, so the sum does not need to be 100. This is shown in variable_tracker where sum_sizes is calculated.
Why do we need plt.show() after plt.pie()?
plt.pie() prepares the pie chart but does not display it. plt.show() opens the window to display the chart. See execution_table step 4.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the sum of the data values after step 1?
A50
B100
C30
D200
💡 Hint
Check the 'Calculation' column in execution_table row for step 1.
At which step are the pie slices actually drawn on the plot?
AStep 1
BStep 2
CStep 3
DStep 4
💡 Hint
Look at the 'Action' column in execution_table to find when drawing happens.
If the sizes list changed to [10, 10, 80], how would the slice angles change?
AThey would be [36°, 36°, 288°]
BThey would be [30°, 20°, 50°]
CThey would be [10°, 10°, 80°]
DThey would be equal slices
💡 Hint
Use the formula: angle = (value / sum) * 360 degrees, see variable_tracker slice_angles.
Concept Snapshot
plt.pie(data)
- data: list of values for slices
- Automatically calculates slice sizes as % of total
- Draws pie chart slices
- Use plt.show() to display
- Slices angles sum to 360 degrees
Full Transcript
This visual execution shows how to create a basic pie chart using matplotlib's plt.pie function. First, data values are prepared as a list. Then plt.pie is called with this data, which calculates the sum and converts each value into an angle proportional to the total. The pie slices are drawn based on these angles. Finally, plt.show() displays the pie chart window. Variables like sizes, sum_sizes, and slice_angles track the data and calculations step-by-step. Key moments clarify why angles sum to 360 degrees, how plt.pie handles sums, and the role of plt.show(). The quizzes test understanding of sums, drawing steps, and angle calculations for different data.

Practice

(1/5)
1. What does the plt.pie() function in matplotlib do?
easy
A. It creates a line chart to show trends over time.
B. It creates a pie chart to show parts of a whole.
C. It creates a bar chart to compare categories.
D. It creates a scatter plot to show data points.

Solution

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

    The function plt.pie() is designed to create pie charts, which visually represent parts of a whole as slices of a circle.
  2. Step 2: Compare with other chart types

    Line charts, bar charts, and scatter plots are created with different functions like plt.plot(), plt.bar(), and plt.scatter(), not plt.pie().
  3. Final Answer:

    It creates a pie chart to show parts of a whole. -> Option B
  4. Quick Check:

    Pie chart = plt.pie() [OK]
Hint: Pie chart = parts of whole, use plt.pie() [OK]
Common Mistakes:
  • Confusing pie chart with bar or line charts
  • Thinking plt.pie() creates scatter plots
  • Mixing up chart functions in matplotlib
2. Which of the following is the correct syntax to create a basic pie chart with labels using matplotlib?
easy
A. plt.pie(sizes, labels=labels)
B. plt.pie(labels, sizes=sizes)
C. plt.pie(labels=sizes, sizes=labels)
D. plt.pie(sizes, labels)

Solution

  1. Step 1: Check the order of arguments in plt.pie()

    The first argument to plt.pie() is the sizes (values) of slices, and labels are passed as a keyword argument labels=.
  2. Step 2: Validate correct keyword usage

    plt.pie(sizes, labels=labels) correctly uses plt.pie(sizes, labels=labels). Options B and C misuse argument order or keywords, and D misses the keyword for labels.
  3. Final Answer:

    plt.pie(sizes, labels=labels) -> Option A
  4. Quick Check:

    Sizes first, labels keyword [OK]
Hint: Sizes first, labels with labels= keyword [OK]
Common Mistakes:
  • Passing labels as first argument instead of sizes
  • Omitting labels= keyword
  • Swapping sizes and labels arguments
3. What will be the output of this code?
import matplotlib.pyplot as plt
sizes = [30, 20, 50]
labels = ['A', 'B', 'C']
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.show()
medium
A. A pie chart with three slices labeled A, B, C showing percentages 30.0%, 20.0%, 50.0%
B. A bar chart with bars labeled A, B, C
C. A pie chart with slices but no labels or percentages
D. Syntax error due to autopct usage

Solution

  1. Step 1: Understand plt.pie() parameters

    The sizes list defines slice sizes, labels assign names, and autopct='%1.1f%%' adds percentage text on slices.
  2. Step 2: Predict the visual output

    The code will produce a pie chart with three slices labeled A, B, C, each showing their percentage values 30.0%, 20.0%, and 50.0% respectively.
  3. Final Answer:

    A pie chart with three slices labeled A, B, C showing percentages 30.0%, 20.0%, 50.0% -> Option A
  4. Quick Check:

    autopct adds percentages [OK]
Hint: autopct='%1.1f%%' shows slice percentages [OK]
Common Mistakes:
  • Thinking autopct causes errors
  • Expecting bar chart instead of pie chart
  • Ignoring labels or percentages on chart
4. Identify the error in this code snippet that tries to create a pie chart:
import matplotlib.pyplot as plt
sizes = [40, 30, 30]
labels = ['X', 'Y', 'Z']
plt.pie(labels, sizes=sizes)
plt.show()
medium
A. The sizes list must be strings, not numbers.
B. The labels list is missing a keyword argument.
C. plt.show() is missing parentheses.
D. The sizes argument should be the first positional argument, not labels.

Solution

  1. Step 1: Check argument order in plt.pie()

    The first argument must be sizes (numbers), but the code passes labels first, which is incorrect.
  2. Step 2: Correct argument usage

    Sizes should be the first positional argument, and labels should be passed with labels=labels keyword.
  3. Final Answer:

    The sizes argument should be the first positional argument, not labels. -> Option D
  4. Quick Check:

    Sizes first, labels keyword [OK]
Hint: Sizes first, labels with labels= keyword [OK]
Common Mistakes:
  • Passing labels as first argument
  • Forgetting labels= keyword
  • Confusing argument order
5. You want to create a pie chart showing sales distribution for 4 products with sizes [15, 25, 35, 25] and labels ['P1', 'P2', 'P3', 'P4']. You also want to highlight the largest slice by "exploding" it out. Which code correctly does this?
hard
A. plt.pie([15,25,35,25], labels=['P1','P2','P3','P4'], explode=[0,0,0,0.1], autopct='%1.1f%%')
B. plt.pie([15,25,35,25], labels=['P1','P2','P3','P4'], explode=[0.1,0,0,0], autopct='%1.1f%%')
C. plt.pie([15,25,35,25], labels=['P1','P2','P3','P4'], explode=[0,0,0.1,0], autopct='%1.1f%%')
D. plt.pie([15,25,35,25], labels=['P1','P2','P3','P4'], explode=[0,0.1,0,0], autopct='%1.1f%%')

Solution

  1. Step 1: Identify the largest slice

    The sizes are [15, 25, 35, 25]. The largest value is 35 at index 2 (third element).
  2. Step 2: Set explode to highlight largest slice

    The explode list should have 0.1 at index 2 and 0 elsewhere: [0, 0, 0.1, 0]. plt.pie([15,25,35,25], labels=['P1','P2','P3','P4'], explode=[0,0,0.1,0], autopct='%1.1f%%') matches this.
  3. Final Answer:

    plt.pie([15,25,35,25], labels=['P1','P2','P3','P4'], explode=[0,0,0.1,0], autopct='%1.1f%%') -> Option C
  4. Quick Check:

    Explode largest slice index 2 [OK]
Hint: Explode list: 0.1 at largest slice index [OK]
Common Mistakes:
  • Exploding wrong slice index
  • Using explode without matching list length
  • Forgetting autopct for percentages
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