SlideShare a Scribd company logo
www.r-squared.in/git-hub
dataCrunch
Data Visualization With R
Learn To Combine Multiple Graphs
dataCrunchCourse Material
Slide 2
All the material related to this course are available at our Website
Slides can be viewed at SlideShare
Scripts can be downloaded from GitHub
Videos can be viewed on our Youtube Channel
dataCrunch
Layout
Slide 3
dataCrunchLayout: Objectives
Slide 4
In this section, we will learn to:
Combine multiple graphs in a single frame using the following functions:
● par() function
● layout() function
dataCrunchLayout: Introduction
Slide 5
Often, it is useful to have multiple plots in the same frame as it allows us to get a comprehensive view
of a particular variable or compare among different variables. The Graphics package offers two
methods to combine multiple plots.
The par() function can be used to set graphical parameters regarding plot layout using the mfcol and
mfrow arguments. The layout() function serves the same purpose but offers more flexibility by
allowing us to modify the height and width of rows and columns.
dataCrunchLayout: par()
Slide 6
The par() function allows us to customize the graphical parameters(title, axis, font, color, size) for a
particular session. For combining multiple plots, we can use the graphical parameters mfrow and
mfcol. These two parameters create a matrix of plots filled by rows and columns respectively. Let us
combine plots using both the above parameters.
Option Description Arguments
mfrow Fill by rows Number of rows and columns
mfcol Fill by columns Number of rows and columns
dataCrunchLayout: par(mfrow)
Slide 7
(a) mfrow
mfrow combines plots filled by rows i.e it takes two arguments, the number of rows and number of
columns and then starts filling the plots by row. Below is the syntax for mfrow:
Let us begin by combining 4 plots in 2 rows and 2 columns:
# mfrow syntax
mfrow(number of rows, number of columns)
dataCrunchRecipe 1: Code
Slide 8
Let us begin by combining 4 plots in 2 rows and 2 columns. The plots will be filled by rows as we are using
the mfrow function:
# store the current parameter settings in init
init <- par(no.readonly=TRUE)
# specify that 4 graphs to be combined and filled by rows
par(mfrow = c(2, 2))
# specify the graphs to be combined
plot(mtcars$mpg)
plot(mtcars$disp, mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
# restore the setting stored in init
par(init)
dataCrunchRecipe 1: Plot
Slide 9
dataCrunchRecipe 2: Code
Slide 10
Combine 2 plots in 1 row and 2 columns.
# store the current parameter settings in init
init <- par(no.readonly=TRUE)
# specify that 2 graphs to be combined and filled by rows
par(mfrow = c(1, 2))
# specify the graphs to be combined
hist(mtcars$mpg)
boxplot(mtcars$mpg)
# restore the setting stored in init
par(init)
dataCrunchRecipe 2: Plot
Slide 11
dataCrunchRecipe 3: Code
Slide 12
Combine 2 plots in 2 rows and 1 column
# store the current parameter settings in init
init <- par(no.readonly=TRUE)
# specify that 2 graphs to be combined and filled by rows
par(mfrow = c(2, 1))
# specify the graphs to be combined
hist(mtcars$mpg)
boxplot(mtcars$mpg)
# restore the setting stored in init
par(init)
dataCrunchRecipe 3: Plot
Slide 13
dataCrunchRecipe 4: Code
Slide 14
Combine 3 plots in 1 row and 3 columns
# store the current parameter settings in init
init <- par(no.readonly=TRUE)
# specify that 3 graphs to be combined and filled by rows
par(mfrow = c(1, 3))
# specify the graphs to be combined
plot(mtcars$disp, mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
# restore the setting stored in init
par(init)
dataCrunchRecipe 4: Plot
Slide 15
dataCrunchRecipe 5: Code
Slide 16
Combine 3 plots in 3 rows and 1 column
# store the current parameter settings in init
init <- par(no.readonly=TRUE)
# specify that 3 graphs to be combined and filled by rows
par(mfrow = c(3, 1))
# specify the graphs to be combined
plot(mtcars$disp, mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
# restore the setting stored in init
par(init)
dataCrunchRecipe 5: Plot
Slide 17
dataCrunchLayout: par(mfcol)
Slide 18
(a) mfcol
mfcol combines plots filled by columns i.e it takes two arguments, the number of rows and number of
columns and then starts filling the plots by columns. Below is the syntax for mfrow:
Let us begin by combining 4 plots in 2 rows and 2 columns:
# mfcol syntax
mfcol(number of rows, number of columns)
dataCrunchRecipe 6: Code
Slide 19
Combine 4 plots in 2 rows and 2 columns
# store the current parameter settings in init
init <- par(no.readonly=TRUE)
# specify that 4 graphs to be combined and filled by columns
par(mfcol = c(2, 2))
# specify the graphs to be combined
plot(mtcars$mpg)
plot(mtcars$disp, mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
# restore the setting stored in init
par(init)
dataCrunchRecipe 6: Plot
Slide 20
dataCrunchSpecial Cases
Slide 21
What happens if we specify lesser or more number of graphs? In the next two examples, we will
specify lesser or more number of graphs than we ask the par() function to combine. Let us see
what happens in such instances:
Case 1: Lesser number of graphs specified
We will specify that 4 plots need to be combined in 2 rows and 2 columns but provide only 3
graphs.
Case 2: Extra graph specified
We will specify that 4 plots need to be combined in 2 rows and 2 columns but specify 6 graphs
instead of 4.
dataCrunchSpecial Case 1: Code
Slide 22
# store the current parameter settings in init
init <- par(no.readonly=TRUE)
# specify that 4 graphs to be combined and filled by rows
par(mfrow = c(2, 2))
# specify the graphs to be combined
plot(mtcars$disp, mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
# restore the setting stored in init
par(init)
dataCrunchSpecial Case 1: Plot
Slide 23
dataCrunchSpecial Case 2: Code
Slide 24
# store the current parameter settings in init
init <- par(no.readonly=TRUE)
# specify that 4 graphs to be combined and filled by rows
par(mfrow = c(2, 2))
# specify the graphs to be combined
plot(mtcars$mpg)
plot(mtcars$disp, mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
plot(mtcars$disp, mtcars$mpg)
boxplot(mtcars$mpg)
# restore the setting stored in init
par(init)
dataCrunchSpecial Case 2: Plot
Slide 25
Frame 1 Frame 2
r-squaredCombining Graphs: layout()
Slide 26
At the core of the layout() function is a matrix. We communicate the structure in which the plots
must be combined using a matrix. As such, the layout function is more flexible compared to the par()
function.
Let us begin by combining 4 plots in a 2 row/2 column structure. We do this by creating a layout using
the matrix function.
Option Description Value
matrix Matrix specifying location of plots Matrix
widths Width of columns Vector
heights Heights of Rows Vector
dataCrunchRecipe 7: Code
Slide 27
Combine 4 plots in 2 rows/2 columns filled by rows
# specify the layout
# 4 plots to be combined in 2 row/ 2 columns and arranged by row
layout(matrix(c(1, 2, 3, 4), nrow = 2, byrow = TRUE))
# specify the 4 plots
plot(mtcars$disp, mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
plot(mtcars$mpg)
dataCrunchRecipe 7: Plot
Slide 28
dataCrunchRecipe 8: Code
Slide 29
Combine 4 plots in 2 rows/2 columns filled by columns
To fill the plots by column, we specify byrow = FALSE in the matrix.
# specify the layout
# 4 plots to be combined in 2 row/ 2 columns and filled by columns
layout(matrix(c(1, 2, 3, 4), nrow = 2, byrow = FALSE))
# specify the 4 plots
plot(mtcars$disp, mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
plot(mtcars$mpg)
dataCrunchRecipe 2: Plot
Slide 30
dataCrunchRecipe 9: Code
Slide 31
Combine 3 plots in 2 rows/2 columns filled by rows
The magic of the layout() function begins here. We want to combine 3 plots and the first plot should occupy both
the columns in row 1 and the next 2 plots should be in row 2. If you look at the matrix below, 1 is specified twice
and since the matrix is filled by row, it will occupy both the columns in the first row. Similarly the first plot will occupy
the entire first row. It will be crystal clear when you see the plot.
# specify the matrix
> matrix(c(1, 1, 2, 3), nrow = 2, byrow = TRUE)
[,1] [,2]
[1,] 1 1
[2,] 2 3
# 3 plots to be combined in 2 row/ 2 columns and arranged by row
layout(matrix(c(1, 1, 2, 3), nrow = 2, byrow = TRUE))
# specify the 3 plots
plot(mtcars$disp, mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
dataCrunchRecipe 9: Plot
Slide 32
dataCrunchRecipe 10: Code
Slide 33
Combine 3 plots in 2 rows/2 columns filled by rows
The plots must be filled by rows and the third plot must occupy both the columns of the second row while the other
two plots will be placed in the first row. The matrix would look like this:
# specify the matrix
> matrix(c(1, 2, 3, 3), nrow = 2, byrow = TRUE)
[,1] [,2]
[1,] 1 2
[2,] 3 3
# 3 plots to be combined in 2 row/ 2 columns and arranged by row
layout(matrix(c(1, 2, 3, 3), nrow = 2, byrow = TRUE))
# specify the 3 plots
hist(mtcars$mpg)
boxplot(mtcars$mpg)
plot(mtcars$disp, mtcars$mpg)
dataCrunchRecipe 10: Plot
Slide 34
dataCrunchRecipe 11: Code
Slide 35
Combine 3 plots in 2 rows/2 columns filled by columns
The plots must be filled by columns and the first plot must occupy both the rows of the first column
while the other two plots will be placed in the second column in two rows. The matrix would look
like this:
# specify the matrix
> matrix(c(1, 1, 2, 3), nrow = 2, byrow = FALSE)
[,1] [,2]
[1,] 1 2
[2,] 1 3
# 3 plots to be combined in 2 row/ 2 columns and arranged by columns
layout(matrix(c(1, 1, 2, 3), nrow = 2, byrow = FALSE))
# specify the 3 plots
hist(mtcars$mpg)
plot(mtcars$disp, mtcars$mpg)
boxplot(mtcars$mpg)
dataCrunchRecipe 11: Plot
Slide 36
dataCrunchRecipe 12: Code
Slide 37
Combine 3 plots in 2 rows/2 columns filled by columns
The plots must be filled by columns and the first plot must occupy both the rows of the second
column while the other two plots will be placed in the first column in two rows. The matrix would
look like this:
# specify the matrix
> matrix(c(1, 2, 3, 3), nrow = 2, byrow = FALSE)
[,1] [,2]
[1,] 1 3
[2,] 2 3
# 3 plots to be combined in 2 row/ 2 columns and arranged by columns
layout(matrix(c(1, 2, 3, 3), nrow = 2, byrow = FALSE))
# specify the 3 plots
boxplot(mtcars$mpg)
plot(mtcars$disp, mtcars$mpg)
hist(mtcars$mpg)
dataCrunchRecipe 12: Plot
Slide 38
dataCrunchlayout(): Widths
Slide 39
Widths
In all the layouts created so far, we have kept the size of the rows and columns equal. What if you
want to modify the width and height of the columns and rows? The widths and heights arguments
in the layout() function address the above mentioned issue. Let us check them out one by one:
The widths argument is used for specifying the width of the columns. Based on the number of
columns in the layout, you can specify the width of each column. Let us look at some examples.
dataCrunchRecipe 13: Code
Slide 40
Width of the 2nd column is twice the width of the 1st column
# specify the matrix
> matrix(c(1, 2, 3, 4), nrow = 2, byrow = TRUE)
[,1] [,2]
[1,] 1 3
[2,] 2 4
# 4 plots to be combined in 2 row/ 2 columns and arranged by columns
layout(matrix(c(1, 2, 3, 4), nrow = 2, byrow = TRUE), widths = c(1, 3))
# specify the plots
plot(mtcars$disp, mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
plot(mtcars$mpg)
dataCrunchRecipe 13: Plot
Slide 41
dataCrunchRecipe 14: Code
Slide 42
Width of the 2nd column is twice that of the first and last column
# specify the matrix
> matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, byrow = TRUE)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
# 6 plots to be combined in 2 row/ 3 columns and filled by rows
layout(matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, byrow = TRUE), widths = c(1, 2, 1))
# specify the plots
plot(mtcars$disp, mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
plot(mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
dataCrunchRecipe 14: Plot
Slide 43
dataCrunchlayout(): Heights
Slide 44
Heights
The heights arguments is used to modify the height of the rows and based on the number of
rows specified in the layout, we can specify the height of each row.
Height of the 2nd row is twice that of the first row
# 4 plots to be combined in 2 row/ 2 columns and filled by rows
layout(matrix(c(1, 2, 3, 4), nrow = 2, byrow = TRUE), heights= c(1, 2))
# specify the 4 plots
plot(mtcars$disp, mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
plot(mtcars$mpg)
dataCrunchRecipe 15: Plot
Slide 45
dataCrunchRecipe 16: Code
Slide 46
Height of the 3rd row is thrice that of the 1st and 2nd row
# specify the matrix
> matrix(c(1, 2, 3, 4, 5, 6), nrow = 3, byrow = TRUE)
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
# 6 plots to be combined in 3 row/ 2 columns and arranged by rows
layout(matrix(c(1, 2, 3, 4, 5, 6), nrow = 3, byrow = TRUE), heights= c(1, 1, 3))
# specify the plots
plot(mtcars$disp, mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
plot(mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
dataCrunchRecipe 16: Plot
Slide 47
dataCrunchPutting it all together...
Slide 48
Before we end this section, let us combine plots using both the widths and heights option.
# specify the matrix
> matrix(c(1, 2, 3, 4, 5, 6), nrow = 3, byrow = TRUE)
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
# 6 plots to be combined in 3 row/ 2 columns and arranged by rows
layout(matrix(c(1, 2, 3, 4, 5, 6), nrow = 3, byrow = TRUE), heights= c(1, 2, 1),
widths = c(2, 1))
# specify the 6 plots
plot(mtcars$disp, mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
plot(mtcars$mpg)
hist(mtcars$mpg)
boxplot(mtcars$mpg)
dataCrunchPlot
Slide 49
dataCrunch
Slide 50
Visit dataCrunch for
tutorials on:
→ R Programming
→ Business Analytics
→ Data Visualization
→ Web Applications
→ Package Development
→ Git & GitHub

More Related Content

PDF
Data Visualization With R
PDF
Data Visualization With R: Learn To Modify Title, Axis Labels & Range
PDF
Data Visualization With R: Introduction
PDF
Data Visualization With R: Learn To Modify Color Of Plots
PDF
R Data Visualization: Learn To Add Text Annotations To Plots
PDF
R Data Visualization Tutorial: Bar Plots
PDF
Data Visualization With R: Learn To Modify Font Of Graphical Parameters
PDF
R Programming: Introduction to Matrices
Data Visualization With R
Data Visualization With R: Learn To Modify Title, Axis Labels & Range
Data Visualization With R: Introduction
Data Visualization With R: Learn To Modify Color Of Plots
R Data Visualization: Learn To Add Text Annotations To Plots
R Data Visualization Tutorial: Bar Plots
Data Visualization With R: Learn To Modify Font Of Graphical Parameters
R Programming: Introduction to Matrices

What's hot (16)

PDF
NCCU: Statistics in the Criminal Justice System, R basics and Simulation - Pr...
PPT
R studio
PPTX
Graph Plots in Matlab
PPTX
Matlab Visualizing Data
PPTX
Programming Assignment Help
PDF
PDF
R Programming: Numeric Functions In R
PDF
PPT
A Survey Of R Graphics
PDF
GNU octave
PPTX
Basic of octave matlab programming language
PDF
Doc 20180130-wa0004
PDF
Data visualization using the grammar of graphics
PDF
Introduction to matlab
PDF
QMC: Undergraduate Workshop, Tutorial on 'R' Software - Yawen Guan, Feb 26, 2...
PDF
Introduction to Data Science With R Lab Record
NCCU: Statistics in the Criminal Justice System, R basics and Simulation - Pr...
R studio
Graph Plots in Matlab
Matlab Visualizing Data
Programming Assignment Help
R Programming: Numeric Functions In R
A Survey Of R Graphics
GNU octave
Basic of octave matlab programming language
Doc 20180130-wa0004
Data visualization using the grammar of graphics
Introduction to matlab
QMC: Undergraduate Workshop, Tutorial on 'R' Software - Yawen Guan, Feb 26, 2...
Introduction to Data Science With R Lab Record
Ad

Viewers also liked (20)

PPTX
Demo deck liveexp
PPT
Introduccion a la generación de informes con R y LaTex
PPT
Best corporate-r-programming-training-in-mumbai
PPTX
Instituto universitario de tecnologia
PDF
Hydrogeological report of Barazan Plateau, North Goa District
PDF
PPTX
grlc Makes GitHub Taste Like Linked Data APIs
PDF
Intern Project - Erika Goto
PDF
Como es la cirugía de catarata
PDF
Kerala livsetock trend state planning board 1966 to 2007
PDF
Iran oil and gas infrastructure
PPTX
The cosmopolitan corporation
PPTX
Joint Indonesia-UK Conference on Computational Chemistry 2015
PPTX
Radar chart guide
PDF
Teaching Close Reading
PDF
Gender and migration cwds key findings
PDF
Metabolic acidosis
PPTX
Perencanaan Pembangunan Prasarana Air untuk Lahan Perkebunan
PPTX
Law of demand
PPT
Facial nerve injury
Demo deck liveexp
Introduccion a la generación de informes con R y LaTex
Best corporate-r-programming-training-in-mumbai
Instituto universitario de tecnologia
Hydrogeological report of Barazan Plateau, North Goa District
grlc Makes GitHub Taste Like Linked Data APIs
Intern Project - Erika Goto
Como es la cirugía de catarata
Kerala livsetock trend state planning board 1966 to 2007
Iran oil and gas infrastructure
The cosmopolitan corporation
Joint Indonesia-UK Conference on Computational Chemistry 2015
Radar chart guide
Teaching Close Reading
Gender and migration cwds key findings
Metabolic acidosis
Perencanaan Pembangunan Prasarana Air untuk Lahan Perkebunan
Law of demand
Facial nerve injury
Ad

Similar to Data Visualization With R: Learn To Combine Multiple Graphs (20)

PPTX
Chart and graphs in R programming language
PPTX
a9bf73_Introduction to Matplotlib01.pptx
PPTX
Exploratory data analysis using r
PPTX
Matplotlib_Presentation jk jdjklskncncsjkk
PPTX
DA_THEORY_PPT DA_THEORY_PPT DA_THEORY_PPT
PDF
R training5
PPT
Tools for research plotting
PPTX
R programming.pptx r language easy concept
PPT
Tools for research plotting
PDF
Introduction to R Short course Fall 2016
PPTX
UNIT_4_data visualization.pptx
PDF
Presentation: Plotting Systems in R
PDF
Broom: Converting Statistical Models to Tidy Data Frames
PDF
PDF
Rtips123
PDF
Collect 50 or more paired quantitative data items. You may use a met.pdf
PDF
M4_DAR_part1. module part 4 analystics with r
PPTX
Coding and Cookies: R basics
DOCX
Concept mapping patient initials, age, gender and admitting d
PDF
R_CheatSheet.pdf
Chart and graphs in R programming language
a9bf73_Introduction to Matplotlib01.pptx
Exploratory data analysis using r
Matplotlib_Presentation jk jdjklskncncsjkk
DA_THEORY_PPT DA_THEORY_PPT DA_THEORY_PPT
R training5
Tools for research plotting
R programming.pptx r language easy concept
Tools for research plotting
Introduction to R Short course Fall 2016
UNIT_4_data visualization.pptx
Presentation: Plotting Systems in R
Broom: Converting Statistical Models to Tidy Data Frames
Rtips123
Collect 50 or more paired quantitative data items. You may use a met.pdf
M4_DAR_part1. module part 4 analystics with r
Coding and Cookies: R basics
Concept mapping patient initials, age, gender and admitting d
R_CheatSheet.pdf

More from Rsquared Academy (20)

PDF
Handling Date & Time in R
PDF
Market Basket Analysis in R
PDF
Practical Introduction to Web scraping using R
PDF
Joining Data with dplyr
PDF
Explore Data using dplyr
PDF
Data Wrangling with dplyr
PDF
Writing Readable Code with Pipes
PDF
Introduction to tibbles
PDF
Read data from Excel spreadsheets into R
PDF
Read/Import data from flat/delimited files into R
PDF
Variables & Data Types in R
PDF
How to install & update R packages?
PDF
How to get help in R?
PDF
Introduction to R
PDF
RMySQL Tutorial For Beginners
PDF
R Markdown Tutorial For Beginners
PDF
R Programming: Introduction to Vectors
PPTX
R Programming: Variables & Data Types
PDF
R Programming: Mathematical Functions In R
PDF
R Programming: Learn To Manipulate Strings In R
Handling Date & Time in R
Market Basket Analysis in R
Practical Introduction to Web scraping using R
Joining Data with dplyr
Explore Data using dplyr
Data Wrangling with dplyr
Writing Readable Code with Pipes
Introduction to tibbles
Read data from Excel spreadsheets into R
Read/Import data from flat/delimited files into R
Variables & Data Types in R
How to install & update R packages?
How to get help in R?
Introduction to R
RMySQL Tutorial For Beginners
R Markdown Tutorial For Beginners
R Programming: Introduction to Vectors
R Programming: Variables & Data Types
R Programming: Mathematical Functions In R
R Programming: Learn To Manipulate Strings In R

Recently uploaded (20)

PDF
Recruitment and Placement PPT.pdfbjfibjdfbjfobj
PDF
Launch Your Data Science Career in Kochi – 2025
PPTX
Business Ppt On Nestle.pptx huunnnhhgfvu
PPTX
Introduction to Basics of Ethical Hacking and Penetration Testing -Unit No. 1...
PPTX
Supervised vs unsupervised machine learning algorithms
PDF
Mega Projects Data Mega Projects Data
PDF
BF and FI - Blockchain, fintech and Financial Innovation Lesson 2.pdf
PPTX
CEE 2 REPORT G7.pptxbdbshjdgsgjgsjfiuhsd
PDF
Introduction to Business Data Analytics.
PPTX
Global journeys: estimating international migration
PPTX
climate analysis of Dhaka ,Banglades.pptx
PPTX
ALIMENTARY AND BILIARY CONDITIONS 3-1.pptx
PPTX
Moving the Public Sector (Government) to a Digital Adoption
PPTX
iec ppt-1 pptx icmr ppt on rehabilitation.pptx
PPTX
05. PRACTICAL GUIDE TO MICROSOFT EXCEL.pptx
PPTX
Business Acumen Training GuidePresentation.pptx
PPTX
Introduction to Knowledge Engineering Part 1
PDF
Clinical guidelines as a resource for EBP(1).pdf
PPTX
IBA_Chapter_11_Slides_Final_Accessible.pptx
Recruitment and Placement PPT.pdfbjfibjdfbjfobj
Launch Your Data Science Career in Kochi – 2025
Business Ppt On Nestle.pptx huunnnhhgfvu
Introduction to Basics of Ethical Hacking and Penetration Testing -Unit No. 1...
Supervised vs unsupervised machine learning algorithms
Mega Projects Data Mega Projects Data
BF and FI - Blockchain, fintech and Financial Innovation Lesson 2.pdf
CEE 2 REPORT G7.pptxbdbshjdgsgjgsjfiuhsd
Introduction to Business Data Analytics.
Global journeys: estimating international migration
climate analysis of Dhaka ,Banglades.pptx
ALIMENTARY AND BILIARY CONDITIONS 3-1.pptx
Moving the Public Sector (Government) to a Digital Adoption
iec ppt-1 pptx icmr ppt on rehabilitation.pptx
05. PRACTICAL GUIDE TO MICROSOFT EXCEL.pptx
Business Acumen Training GuidePresentation.pptx
Introduction to Knowledge Engineering Part 1
Clinical guidelines as a resource for EBP(1).pdf
IBA_Chapter_11_Slides_Final_Accessible.pptx

Data Visualization With R: Learn To Combine Multiple Graphs

  • 2. dataCrunchCourse Material Slide 2 All the material related to this course are available at our Website Slides can be viewed at SlideShare Scripts can be downloaded from GitHub Videos can be viewed on our Youtube Channel
  • 4. dataCrunchLayout: Objectives Slide 4 In this section, we will learn to: Combine multiple graphs in a single frame using the following functions: ● par() function ● layout() function
  • 5. dataCrunchLayout: Introduction Slide 5 Often, it is useful to have multiple plots in the same frame as it allows us to get a comprehensive view of a particular variable or compare among different variables. The Graphics package offers two methods to combine multiple plots. The par() function can be used to set graphical parameters regarding plot layout using the mfcol and mfrow arguments. The layout() function serves the same purpose but offers more flexibility by allowing us to modify the height and width of rows and columns.
  • 6. dataCrunchLayout: par() Slide 6 The par() function allows us to customize the graphical parameters(title, axis, font, color, size) for a particular session. For combining multiple plots, we can use the graphical parameters mfrow and mfcol. These two parameters create a matrix of plots filled by rows and columns respectively. Let us combine plots using both the above parameters. Option Description Arguments mfrow Fill by rows Number of rows and columns mfcol Fill by columns Number of rows and columns
  • 7. dataCrunchLayout: par(mfrow) Slide 7 (a) mfrow mfrow combines plots filled by rows i.e it takes two arguments, the number of rows and number of columns and then starts filling the plots by row. Below is the syntax for mfrow: Let us begin by combining 4 plots in 2 rows and 2 columns: # mfrow syntax mfrow(number of rows, number of columns)
  • 8. dataCrunchRecipe 1: Code Slide 8 Let us begin by combining 4 plots in 2 rows and 2 columns. The plots will be filled by rows as we are using the mfrow function: # store the current parameter settings in init init <- par(no.readonly=TRUE) # specify that 4 graphs to be combined and filled by rows par(mfrow = c(2, 2)) # specify the graphs to be combined plot(mtcars$mpg) plot(mtcars$disp, mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg) # restore the setting stored in init par(init)
  • 10. dataCrunchRecipe 2: Code Slide 10 Combine 2 plots in 1 row and 2 columns. # store the current parameter settings in init init <- par(no.readonly=TRUE) # specify that 2 graphs to be combined and filled by rows par(mfrow = c(1, 2)) # specify the graphs to be combined hist(mtcars$mpg) boxplot(mtcars$mpg) # restore the setting stored in init par(init)
  • 12. dataCrunchRecipe 3: Code Slide 12 Combine 2 plots in 2 rows and 1 column # store the current parameter settings in init init <- par(no.readonly=TRUE) # specify that 2 graphs to be combined and filled by rows par(mfrow = c(2, 1)) # specify the graphs to be combined hist(mtcars$mpg) boxplot(mtcars$mpg) # restore the setting stored in init par(init)
  • 14. dataCrunchRecipe 4: Code Slide 14 Combine 3 plots in 1 row and 3 columns # store the current parameter settings in init init <- par(no.readonly=TRUE) # specify that 3 graphs to be combined and filled by rows par(mfrow = c(1, 3)) # specify the graphs to be combined plot(mtcars$disp, mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg) # restore the setting stored in init par(init)
  • 16. dataCrunchRecipe 5: Code Slide 16 Combine 3 plots in 3 rows and 1 column # store the current parameter settings in init init <- par(no.readonly=TRUE) # specify that 3 graphs to be combined and filled by rows par(mfrow = c(3, 1)) # specify the graphs to be combined plot(mtcars$disp, mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg) # restore the setting stored in init par(init)
  • 18. dataCrunchLayout: par(mfcol) Slide 18 (a) mfcol mfcol combines plots filled by columns i.e it takes two arguments, the number of rows and number of columns and then starts filling the plots by columns. Below is the syntax for mfrow: Let us begin by combining 4 plots in 2 rows and 2 columns: # mfcol syntax mfcol(number of rows, number of columns)
  • 19. dataCrunchRecipe 6: Code Slide 19 Combine 4 plots in 2 rows and 2 columns # store the current parameter settings in init init <- par(no.readonly=TRUE) # specify that 4 graphs to be combined and filled by columns par(mfcol = c(2, 2)) # specify the graphs to be combined plot(mtcars$mpg) plot(mtcars$disp, mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg) # restore the setting stored in init par(init)
  • 21. dataCrunchSpecial Cases Slide 21 What happens if we specify lesser or more number of graphs? In the next two examples, we will specify lesser or more number of graphs than we ask the par() function to combine. Let us see what happens in such instances: Case 1: Lesser number of graphs specified We will specify that 4 plots need to be combined in 2 rows and 2 columns but provide only 3 graphs. Case 2: Extra graph specified We will specify that 4 plots need to be combined in 2 rows and 2 columns but specify 6 graphs instead of 4.
  • 22. dataCrunchSpecial Case 1: Code Slide 22 # store the current parameter settings in init init <- par(no.readonly=TRUE) # specify that 4 graphs to be combined and filled by rows par(mfrow = c(2, 2)) # specify the graphs to be combined plot(mtcars$disp, mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg) # restore the setting stored in init par(init)
  • 23. dataCrunchSpecial Case 1: Plot Slide 23
  • 24. dataCrunchSpecial Case 2: Code Slide 24 # store the current parameter settings in init init <- par(no.readonly=TRUE) # specify that 4 graphs to be combined and filled by rows par(mfrow = c(2, 2)) # specify the graphs to be combined plot(mtcars$mpg) plot(mtcars$disp, mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg) plot(mtcars$disp, mtcars$mpg) boxplot(mtcars$mpg) # restore the setting stored in init par(init)
  • 25. dataCrunchSpecial Case 2: Plot Slide 25 Frame 1 Frame 2
  • 26. r-squaredCombining Graphs: layout() Slide 26 At the core of the layout() function is a matrix. We communicate the structure in which the plots must be combined using a matrix. As such, the layout function is more flexible compared to the par() function. Let us begin by combining 4 plots in a 2 row/2 column structure. We do this by creating a layout using the matrix function. Option Description Value matrix Matrix specifying location of plots Matrix widths Width of columns Vector heights Heights of Rows Vector
  • 27. dataCrunchRecipe 7: Code Slide 27 Combine 4 plots in 2 rows/2 columns filled by rows # specify the layout # 4 plots to be combined in 2 row/ 2 columns and arranged by row layout(matrix(c(1, 2, 3, 4), nrow = 2, byrow = TRUE)) # specify the 4 plots plot(mtcars$disp, mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg) plot(mtcars$mpg)
  • 29. dataCrunchRecipe 8: Code Slide 29 Combine 4 plots in 2 rows/2 columns filled by columns To fill the plots by column, we specify byrow = FALSE in the matrix. # specify the layout # 4 plots to be combined in 2 row/ 2 columns and filled by columns layout(matrix(c(1, 2, 3, 4), nrow = 2, byrow = FALSE)) # specify the 4 plots plot(mtcars$disp, mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg) plot(mtcars$mpg)
  • 31. dataCrunchRecipe 9: Code Slide 31 Combine 3 plots in 2 rows/2 columns filled by rows The magic of the layout() function begins here. We want to combine 3 plots and the first plot should occupy both the columns in row 1 and the next 2 plots should be in row 2. If you look at the matrix below, 1 is specified twice and since the matrix is filled by row, it will occupy both the columns in the first row. Similarly the first plot will occupy the entire first row. It will be crystal clear when you see the plot. # specify the matrix > matrix(c(1, 1, 2, 3), nrow = 2, byrow = TRUE) [,1] [,2] [1,] 1 1 [2,] 2 3 # 3 plots to be combined in 2 row/ 2 columns and arranged by row layout(matrix(c(1, 1, 2, 3), nrow = 2, byrow = TRUE)) # specify the 3 plots plot(mtcars$disp, mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg)
  • 33. dataCrunchRecipe 10: Code Slide 33 Combine 3 plots in 2 rows/2 columns filled by rows The plots must be filled by rows and the third plot must occupy both the columns of the second row while the other two plots will be placed in the first row. The matrix would look like this: # specify the matrix > matrix(c(1, 2, 3, 3), nrow = 2, byrow = TRUE) [,1] [,2] [1,] 1 2 [2,] 3 3 # 3 plots to be combined in 2 row/ 2 columns and arranged by row layout(matrix(c(1, 2, 3, 3), nrow = 2, byrow = TRUE)) # specify the 3 plots hist(mtcars$mpg) boxplot(mtcars$mpg) plot(mtcars$disp, mtcars$mpg)
  • 35. dataCrunchRecipe 11: Code Slide 35 Combine 3 plots in 2 rows/2 columns filled by columns The plots must be filled by columns and the first plot must occupy both the rows of the first column while the other two plots will be placed in the second column in two rows. The matrix would look like this: # specify the matrix > matrix(c(1, 1, 2, 3), nrow = 2, byrow = FALSE) [,1] [,2] [1,] 1 2 [2,] 1 3 # 3 plots to be combined in 2 row/ 2 columns and arranged by columns layout(matrix(c(1, 1, 2, 3), nrow = 2, byrow = FALSE)) # specify the 3 plots hist(mtcars$mpg) plot(mtcars$disp, mtcars$mpg) boxplot(mtcars$mpg)
  • 37. dataCrunchRecipe 12: Code Slide 37 Combine 3 plots in 2 rows/2 columns filled by columns The plots must be filled by columns and the first plot must occupy both the rows of the second column while the other two plots will be placed in the first column in two rows. The matrix would look like this: # specify the matrix > matrix(c(1, 2, 3, 3), nrow = 2, byrow = FALSE) [,1] [,2] [1,] 1 3 [2,] 2 3 # 3 plots to be combined in 2 row/ 2 columns and arranged by columns layout(matrix(c(1, 2, 3, 3), nrow = 2, byrow = FALSE)) # specify the 3 plots boxplot(mtcars$mpg) plot(mtcars$disp, mtcars$mpg) hist(mtcars$mpg)
  • 39. dataCrunchlayout(): Widths Slide 39 Widths In all the layouts created so far, we have kept the size of the rows and columns equal. What if you want to modify the width and height of the columns and rows? The widths and heights arguments in the layout() function address the above mentioned issue. Let us check them out one by one: The widths argument is used for specifying the width of the columns. Based on the number of columns in the layout, you can specify the width of each column. Let us look at some examples.
  • 40. dataCrunchRecipe 13: Code Slide 40 Width of the 2nd column is twice the width of the 1st column # specify the matrix > matrix(c(1, 2, 3, 4), nrow = 2, byrow = TRUE) [,1] [,2] [1,] 1 3 [2,] 2 4 # 4 plots to be combined in 2 row/ 2 columns and arranged by columns layout(matrix(c(1, 2, 3, 4), nrow = 2, byrow = TRUE), widths = c(1, 3)) # specify the plots plot(mtcars$disp, mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg) plot(mtcars$mpg)
  • 42. dataCrunchRecipe 14: Code Slide 42 Width of the 2nd column is twice that of the first and last column # specify the matrix > matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, byrow = TRUE) [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 # 6 plots to be combined in 2 row/ 3 columns and filled by rows layout(matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, byrow = TRUE), widths = c(1, 2, 1)) # specify the plots plot(mtcars$disp, mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg) plot(mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg)
  • 44. dataCrunchlayout(): Heights Slide 44 Heights The heights arguments is used to modify the height of the rows and based on the number of rows specified in the layout, we can specify the height of each row. Height of the 2nd row is twice that of the first row # 4 plots to be combined in 2 row/ 2 columns and filled by rows layout(matrix(c(1, 2, 3, 4), nrow = 2, byrow = TRUE), heights= c(1, 2)) # specify the 4 plots plot(mtcars$disp, mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg) plot(mtcars$mpg)
  • 46. dataCrunchRecipe 16: Code Slide 46 Height of the 3rd row is thrice that of the 1st and 2nd row # specify the matrix > matrix(c(1, 2, 3, 4, 5, 6), nrow = 3, byrow = TRUE) [,1] [,2] [1,] 1 2 [2,] 3 4 [3,] 5 6 # 6 plots to be combined in 3 row/ 2 columns and arranged by rows layout(matrix(c(1, 2, 3, 4, 5, 6), nrow = 3, byrow = TRUE), heights= c(1, 1, 3)) # specify the plots plot(mtcars$disp, mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg) plot(mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg)
  • 48. dataCrunchPutting it all together... Slide 48 Before we end this section, let us combine plots using both the widths and heights option. # specify the matrix > matrix(c(1, 2, 3, 4, 5, 6), nrow = 3, byrow = TRUE) [,1] [,2] [1,] 1 2 [2,] 3 4 [3,] 5 6 # 6 plots to be combined in 3 row/ 2 columns and arranged by rows layout(matrix(c(1, 2, 3, 4, 5, 6), nrow = 3, byrow = TRUE), heights= c(1, 2, 1), widths = c(2, 1)) # specify the 6 plots plot(mtcars$disp, mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg) plot(mtcars$mpg) hist(mtcars$mpg) boxplot(mtcars$mpg)
  • 50. dataCrunch Slide 50 Visit dataCrunch for tutorials on: → R Programming → Business Analytics → Data Visualization → Web Applications → Package Development → Git & GitHub