Lollipop charts help you compare values clearly using dots connected to a baseline by lines. They are easy to read and look neat.
When you want to compare different categories with their values visually.
When you want a simple chart that is less cluttered than bar charts.
When you want to highlight exact values with dots on a line.
When you want to show ranking or order of items clearly.
When you want a fresh alternative to bar charts for presentations.
Syntax
Matplotlib
import matplotlib.pyplot as plt
plt.stem(x, y, basefmt=" ", use_line_collection=True)
plt.show()
plt.stem() creates the lollipop chart with lines and dots.
basefmt=" " removes the baseline line for cleaner look.
Examples
Basic lollipop chart with default baseline.
Matplotlib
import matplotlib.pyplot as plt
x = [1, 2, 3]
y = [4, 5, 6]
plt.stem(x, y)
plt.show()
Lollipop chart with categorical x-axis and no baseline line.
Matplotlib
import matplotlib.pyplot as plt
x = ['A', 'B', 'C']
y = [10, 15, 7]
plt.stem(x, y, basefmt=" ")
plt.show()
Customize colors of dots and lines in the lollipop chart.
Matplotlib
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [5, 3, 8, 6]
markerline, stemlines, baseline = plt.stem(x, y)
markerline.set_markerfacecolor('red')
stemlines.set_color('green')
plt.show()
Sample Program
This program shows sales numbers for different fruits using a lollipop chart. Each fruit has a dot connected to the baseline by a line, making it easy to compare sales.
Matplotlib
import matplotlib.pyplot as plt
# Data for fruits and their sales
fruits = ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry']
sales = [50, 30, 40, 20, 60]
# Create lollipop chart
plt.stem(fruits, sales, basefmt=" ", use_line_collection=True)
# Add title and labels
plt.title('Fruit Sales Lollipop Chart')
plt.xlabel('Fruit')
plt.ylabel('Sales')
plt.show()
OutputSuccess
Important Notes
Lollipop charts are great for small to medium datasets.
Use use_line_collection=True for better performance with many points.
You can customize colors and markers for better visuals.
Summary
Lollipop charts use lines and dots to show values clearly.
They are simpler and cleaner than bar charts.
Use plt.stem() in matplotlib to create them easily.
Practice
(1/5)
1. What is the main purpose of a lollipop chart in data visualization?
easy
A. To compare values using lines and dots for clear differences
B. To show the distribution of data using bars
C. To display data points on a map
D. To create 3D surface plots
Solution
Step 1: Understand lollipop chart basics
A lollipop chart uses lines and dots to compare values clearly, making differences easy to see.
Step 2: Compare with other chart types
Bar charts show distribution, maps show locations, and 3D plots show surfaces, which are different from lollipop charts.
Final Answer:
To compare values using lines and dots for clear differences -> Option A
Quick Check:
Lollipop chart = lines + dots comparison [OK]
Hint: Remember: lollipop = line + dot comparison [OK]
Common Mistakes:
Confusing lollipop charts with bar charts
Thinking lollipop charts show geographic data
Assuming lollipop charts are 3D plots
2. Which matplotlib function is used to create a basic lollipop chart?
easy
A. plt.bar()
B. plt.scatter()
C. plt.plot()
D. plt.stem()
Solution
Step 1: Identify the function for lollipop charts
Matplotlib's plt.stem() creates lollipop charts by drawing lines with markers at the ends.
Step 2: Differentiate from other plotting functions
plt.bar() makes bar charts, plt.scatter() makes scatter plots, and plt.plot() makes line plots, not lollipop charts.
Final Answer:
plt.stem() -> Option D
Quick Check:
Use plt.stem() for lollipop charts [OK]
Hint: Use plt.stem() to combine lines and dots [OK]
Common Mistakes:
Using plt.bar() instead of plt.stem()
Confusing scatter plots with lollipop charts
Trying plt.plot() which lacks markers by default
3. What will the following code output?
import matplotlib.pyplot as plt
x = [1, 2, 3]
y = [4, 2, 5]
plt.stem(x, y)
plt.show()
medium
A. A bar chart with bars at x=1,2,3 and heights 4,2,5
B. A lollipop chart with stems at x=1,2,3 and heights 4,2,5
C. A scatter plot with points at (1,4), (2,2), (3,5)
D. An error because plt.stem() needs more arguments
Solution
Step 1: Understand plt.stem() behavior
The function plt.stem(x, y) draws vertical lines (stems) from zero to each y value at positions x, with dots at the top.
Step 2: Analyze the given data points
Here, x = [1,2,3] and y = [4,2,5], so stems appear at x=1 with height 4, x=2 with height 2, and x=3 with height 5.
Final Answer:
A lollipop chart with stems at x=1,2,3 and heights 4,2,5 -> Option B
Quick Check:
plt.stem(x,y) = lollipop chart [OK]
Hint: plt.stem(x,y) draws stems at x with heights y [OK]
Common Mistakes:
Thinking plt.stem() creates bar charts
Confusing scatter plot with lollipop chart
Assuming plt.stem() requires extra arguments
4. Identify the error in this code for creating a lollipop chart:
import matplotlib.pyplot as plt
x = [1, 2, 3]
y = [4, 5]
plt.stem(x, y)
plt.show()
medium
A. plt.stem() is not imported correctly
B. plt.show() is missing parentheses
C. x and y have different lengths causing a ValueError
D. No error, code runs fine
Solution
Step 1: Check lengths of x and y
x has 3 elements, y has 2 elements. They must be the same length for plotting.
Step 2: Understand matplotlib error
Matplotlib raises a ValueError when x and y lengths differ because it cannot pair points correctly.
Final Answer:
x and y have different lengths causing a ValueError -> Option C
Quick Check:
Equal length x,y needed [OK]
Hint: Check x and y lengths match before plotting [OK]
Common Mistakes:
Ignoring length mismatch between x and y
Thinking plt.show() needs no parentheses
Assuming plt.stem() import causes error
5. Which code snippet correctly changes the marker color to red?
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [5, 3, 9, 6]
markerline, stemlines, baseline = plt.stem(x, y)
# Change marker color to red
# Which line below is correct?
hard
A. markerline.set_color('red')
B. markerline.get_markerfacecolor()[2].set_color('red')
C. markerline.get_markerfacecolor()[2] = 'red'
D. markerline.get_markerfacecolor()[2].set_facecolor('red')
Solution
Step 1: Understand plt.stem() return values
It returns markerline, stemlines, baseline. markerline is a Line2D object representing all markers.
Step 2: Change marker color correctly
Use markerline.set_color('red') to change the marker colors to red.
Final Answer:
markerline.set_color('red') -> Option A
Quick Check:
Use set_color() on markerline to change marker colors [OK]
Hint: Use set_color() on markerline to change marker colors [OK]
Common Mistakes:
Trying to assign color directly to a list element
Using get_markerfacecolor() incorrectly
Confusing set_color() with set_facecolor()
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.