Bird
Raised Fist0
Matplotlibdata~30 mins

Marker size variation in Matplotlib - Mini Project: Build & Apply

Choose your learning style10 modes available
Marker size variation
📖 Scenario: You are analyzing sales data for a small store. You want to visualize the sales amounts for different products using a scatter plot. To make the plot more informative, you will vary the size of the markers based on the sales amount.
🎯 Goal: Create a scatter plot where the marker size changes according to the sales amount for each product.
📋 What You'll Learn
Create a dictionary called sales with product names as keys and sales amounts as values.
Create a list called sizes that contains marker sizes based on the sales amounts.
Use matplotlib.pyplot to create a scatter plot with product names on the x-axis and sales amounts on the y-axis.
Set the marker sizes in the scatter plot using the sizes list.
Display the plot.
💡 Why This Matters
🌍 Real World
Visualizing sales data with marker size variation helps quickly identify which products sell more, making it easier to focus on popular items.
💼 Career
Data analysts and scientists often use scatter plots with varying marker sizes to represent additional data dimensions visually.
Progress0 / 4 steps
1
Create the sales data dictionary
Create a dictionary called sales with these exact entries: 'Apples': 50, 'Bananas': 30, 'Cherries': 70, 'Dates': 40, and 'Elderberries': 60.
Matplotlib
Hint

Use curly braces {} to create the dictionary with the exact keys and values.

2
Create the sizes list based on sales
Create a list called sizes that contains the sales amounts multiplied by 10 for each product in sales. Use a list comprehension iterating over sales.values().
Matplotlib
Hint

Use a list comprehension like [amount * 10 for amount in sales.values()].

3
Create the scatter plot with varying marker sizes
Import matplotlib.pyplot as plt. Use plt.scatter() to create a scatter plot with product names on the x-axis and sales amounts on the y-axis. Set the marker sizes using the sizes list. Use sales.keys() for x values and sales.values() for y values.
Matplotlib
Hint

Use plt.scatter(list(sales.keys()), list(sales.values()), s=sizes) to plot.

4
Display the scatter plot
Use plt.show() to display the scatter plot.
Matplotlib
Hint

Call plt.show() to display the figure window.

Practice

(1/5)
1. What does the s parameter control in the plt.scatter() function in matplotlib?
easy
A. The size of the markers in the scatter plot
B. The color of the markers
C. The shape of the markers
D. The transparency of the markers

Solution

  1. Step 1: Understand the role of plt.scatter()

    The plt.scatter() function creates scatter plots where each point can have different visual properties.
  2. Step 2: Identify the s parameter purpose

    The s parameter specifically sets the size of each marker in the scatter plot, either as a single value or a list of sizes.
  3. Final Answer:

    The size of the markers in the scatter plot -> Option A
  4. Quick Check:

    s controls marker size [OK]
Hint: Remember: 's' stands for size in scatter plots [OK]
Common Mistakes:
  • Confusing 's' with color or shape parameters
  • Thinking 's' controls transparency
  • Assuming 's' changes marker style
2. Which of the following is the correct way to set marker sizes to 50 for all points in a scatter plot using matplotlib?
easy
A. plt.scatter(x, y, size=50)
B. plt.scatter(x, y, s=50)
C. plt.scatter(x, y, marker_size=50)
D. plt.scatter(x, y, sizes=50)

Solution

  1. Step 1: Recall the parameter name for marker size

    The correct parameter to set marker size in plt.scatter() is s.
  2. Step 2: Check the syntax for setting size

    Using s=50 sets all markers to size 50. Other options use incorrect parameter names.
  3. Final Answer:

    plt.scatter(x, y, s=50) -> Option B
  4. Quick Check:

    Use s for size [OK]
Hint: Use s to set size, not 'size' or 'sizes' [OK]
Common Mistakes:
  • Using 'size' or 'sizes' instead of 's'
  • Trying to set marker size with 'marker_size'
  • Syntax errors from wrong parameter names
3. What will be the output marker sizes for the scatter plot from this code?
import matplotlib.pyplot as plt
x = [1, 2, 3]
y = [4, 5, 6]
sizes = [20, 50, 80]
plt.scatter(x, y, s=sizes)
plt.show()
medium
A. All markers will have size 20
B. Code will raise an error due to wrong size input
C. Markers will have default size because list is invalid
D. Markers will have sizes 20, 50, and 80 respectively

Solution

  1. Step 1: Understand s with list input

    The s parameter accepts a list to assign different sizes to each marker.
  2. Step 2: Match sizes to points

    Since sizes = [20, 50, 80], the first point gets size 20, second 50, third 80.
  3. Final Answer:

    Markers will have sizes 20, 50, and 80 respectively -> Option D
  4. Quick Check:

    List in s sets sizes per point [OK]
Hint: List in s sets sizes point-wise [OK]
Common Mistakes:
  • Assuming all markers get the first size
  • Thinking list input causes error
  • Confusing s with color list
4. Identify the error in this code snippet that tries to vary marker sizes:
import matplotlib.pyplot as plt
x = [1, 2, 3]
y = [4, 5, 6]
sizes = [30, 60]
plt.scatter(x, y, s=sizes)
plt.show()
medium
A. The plt.scatter function is misspelled
B. The s parameter cannot accept lists
C. The sizes list length does not match x and y length
D. The variable sizes is not defined

Solution

  1. Step 1: Check lengths of data and sizes

    The x and y lists have 3 points, but sizes list has only 2 values.
  2. Step 2: Understand size list requirement

    The s list must match the number of points; otherwise, matplotlib raises a ValueError.
  3. Final Answer:

    The sizes list length does not match x and y length -> Option C
  4. Quick Check:

    Sizes list length must equal data points [OK]
Hint: Match sizes list length to data points [OK]
Common Mistakes:
  • Ignoring size list length mismatch
  • Thinking s can't be a list
  • Assuming matplotlib auto-fills missing sizes
5. You want to create a scatter plot where marker sizes represent the population of cities. Given:
cities = ['A', 'B', 'C']
population = [1000, 5000, 3000]
x = [1, 2, 3]
y = [4, 5, 6]

Which code correctly scales the population to marker sizes and plots them?
hard
A. plt.scatter(x, y, s=[p*10 for p in population])
B. plt.scatter(x, y, s=[p/10 for p in population])
C. plt.scatter(x, y, s=population)
D. plt.scatter(x, y, s=[p**2 for p in population])

Solution

  1. Step 1: Understand marker size scaling

    Population values are large; directly using them as sizes will create huge markers.
  2. Step 2: Choose appropriate scaling

    Multiplying population by 10 scales sizes visibly but keeps them reasonable. Dividing by 10 makes markers too small; squaring makes them too large.
  3. Final Answer:

    plt.scatter(x, y, s=[p*10 for p in population]) -> Option A
  4. Quick Check:

    Scale sizes for visibility using multiplication [OK]
Hint: Scale data to reasonable marker sizes by multiplying [OK]
Common Mistakes:
  • Using raw large values causing huge markers
  • Dividing sizes too much making markers tiny
  • Using squared sizes causing disproportionate markers
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