Most basic lollipop plot



How to build a very basic lollipop chart with R and ggplot2. This post how to use geom_point() and geom_segment() based on different input formats.

Lollipop section Data to Viz

From 2 numeric variables


A lollipop plot is very close from both scatterplots and barplots.

Thus, 2 types of input format work to build it:

  • 2 numeric values like for a scatterplot
  • one numeric and one categorical variable like for the barplot.

In any case, a lollipop is built using geom_point() for the circle, and geom_segment() for the stem.

# Libraries
library(ggplot2)

# Create data
data <- data.frame(x=seq(1,30), y=abs(rnorm(30)))
 
# Plot
ggplot(data, aes(x=x, y=y)) +
  geom_point() + 
  geom_segment( aes(x=x, xend=x, y=0, yend=y))

From 1 numeric and 1 categorical variable


The code works pretty much the same way, but it is important to note that the X axis can represent a categorical variable as well. In this case, the lollipop chart is a good replacement of the barplot.

# Libraries
library(ggplot2)

# Create data
data <- data.frame(
  x=LETTERS[1:26], 
  y=abs(rnorm(26))
)
 
# Plot
ggplot(data, aes(x=x, y=y)) +
  geom_point() + 
  geom_segment( aes(x=x, xend=x, y=0, yend=y))

What’s next


The lollipop chart is one of my favourite. There is so much to do with it and it is under-utilized in favor of barplot. Visit the dedicated section for more examples produced with R, or data-to-viz to learn about the available variations and caveats to avoid.

Lollipop section Data to Viz

Related chart types


Barplot
Spider / Radar
Wordcloud
Parallel
Lollipop
Circular Barplot



❤️ 10 best R tricks ❤️

👋 After crafting hundreds of R charts over 12 years, I've distilled my top 10 tips and tricks. Receive them via email! One insight per day for the next 10 days! 🔥