Open In App

How to Connect Data Points on Boxplot with Lines in R?

Improve
Improve
Like Article
Like
Save
Share
Report

In this article, we will discuss how to connect paired points in box plot in ggplot2 in R Programming Language.

Boxplots with data points help us to visualize the summary information between distributions. For example, we may have two quantitative variables corresponding to two different categories and would like to connect those data points by lines. So to do this we have to load the tidyverse library

Syntax:

library(tidyverse)

Example 1:  Creating a Boxplot with lines joining paired points

Here is a basic box plot with lines joining paired points.

R




# load tidyverse
library(tidyverse)
  
# create dataframe
sample_data < - data.frame(value=c(1, 2, 3, 4, 4, 5, 6,
                                   7, 9, 11, 1.5, 2.3, 2.5, 3.4,
                                   4.5, 5.5, 6.5, 7.5, 9.5, 12.5),
  
                           category=c('A', 'B', 'A', 'B', 'A',
                                      'B', 'A', 'B', 'A', 'B',
                                      'A', 'B', 'A', 'B', 'A',
                                      'B', 'A', 'B', 'A', 'B'),
  
                           paired=c(0, 0, 1, 1, 2, 2, 3, 3, 4, 4,
                                    5, 5, 6, 6, 7, 7, 8, 8, 9, 9))
  
# create plot using ggplot() and geom_boxplot() functions
ggplot(sample_data, aes(category, value, fill=category)) +
geom_boxplot()+
  
# geom_point() is used to make points at data values
geom_point()+
  
# geom_line() joins the paired datapoints
geom_line(aes(group=paired))


Output:

Color Customization:

We can change the color and width of the joining segment by using the color and size property of geom_line().  

Syntax:

ggplot(aes( x, y )) + geom_boxplot()+geom_point( aes( fill ), size, shape ) + geom_line( aes( group ), size, color, alpha )

Parameters:

  • group: the variable that has pairs to be joined.
  • color: the variable that categorizes points
  • alpha: determines the transparency
  • size: determines the size
  • shape: determines the shape
  • fill: determines the fill color

Example:

R




# load tidyverse
library(tidyverse)
  
# create dataframe
sample_data <- data.frame( value = c(1,2,3,4,4,5,6,
                                     7,9,11,1.5,2.3,2.5,3.4,
                                     4.5,5.5,6.5,7.5,9.5,12.5),
                            
                          category = c('A','B','A','B','A',
                                        'B','A','B','A','B',
                                        'A','B','A','B','A',
                                        'B','A','B','A','B'),
                            
                          paired = c(0,0,1,1,2,2,3,3,4,4,
                                     5,5,6,6,7,7,8,8,9,9))
  
  
# create plot using ggplot() and geom_boxplot() functions
ggplot(sample_data, aes(category,value, fill=category)) +
  geom_boxplot()+
  
  # geom_line() joins the paired datapoints
  # color and size parameters are used to customize line
  geom_line(aes(group = paired), size=2, color='gray', alpha=0.6)+
   
  # geom_point() is used to make points at data values
  # fill and size parameters are used to customize point
  geom_point(aes(fill=category,group=paired),size=5,shape=21)


Output:

Line Customization

We can convert the joining line into ridged line by using linetype property. Every property that works on a line plot also works in this line.

Syntax:

ggplot(aes( x, y )) + geom_boxplot()+geom_point() + geom_line( aes( group ), linetype )

Parameters

  • group: the variable that has pairs to be joined.
  • linetype: determines the type of line

Example:

R




# load tidyverse
library(tidyverse)
  
# create dataframe
sample_data <- data.frame( value = c(1,2,3,4,4,5,6,
                                     7,9,11,1.5,2.3,2.5,3.4,
                                     4.5,5.5,6.5,7.5,9.5,12.5),
                            
                          category = c('A','B','A','B','A',
                                        'B','A','B','A','B',
                                        'A','B','A','B','A',
                                        'B','A','B','A','B'),
                            
                          paired = c(0,0,1,1,2,2,3,3,4,4,
                                     5,5,6,6,7,7,8,8,9,9))
  
  
# create plot using ggplot() and geom_boxplot() function
ggplot(sample_data, aes(category,value, fill=category)) +
  geom_boxplot()+
  
# linetype parameter is used to customize the joining line
  geom_line(aes(group = paired), linetype=2, size=1.3)+
  
# geom_point() is used to plot data points on boxplot
geom_point(aes(fill=category,group=paired),size=5,shape=21)


Output:



Last Updated : 10 Oct, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads