Open In App

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

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.






# 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:

Example:




# 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

Example:




# 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:


Article Tags :