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
Ad

Recommended

Data Visualization With R: Learn To Modify Title, Axis Labels & Range
Data Visualization With R: Learn To Modify Title, Axis Labels & Range
Rsquared Academy
 
Data Visualization With R: Introduction
Data Visualization With R: Introduction
Rsquared Academy
 
Data Visualization With R: Learn To Modify Color Of Plots
Data Visualization With R: Learn To Modify Color Of Plots
Rsquared Academy
 
R Data Visualization: Learn To Add Text Annotations To Plots
R Data Visualization: Learn To Add Text Annotations To Plots
Rsquared Academy
 
R Data Visualization Tutorial: Bar Plots
R Data Visualization Tutorial: Bar Plots
Rsquared Academy
 
Data Visualization With R: Learn To Modify Font Of Graphical Parameters
Data Visualization With R: Learn To Modify Font Of Graphical Parameters
Rsquared Academy
 
R Programming: Introduction to Matrices
R Programming: Introduction to Matrices
Rsquared Academy
 
Data Visualization With R
Data Visualization With R
Rsquared Academy
 
NCCU: Statistics in the Criminal Justice System, R basics and Simulation - Pr...
NCCU: Statistics in the Criminal Justice System, R basics and Simulation - Pr...
The Statistical and Applied Mathematical Sciences Institute
 
R studio
R studio
Kinza Irshad
 
Graph Plots in Matlab
Graph Plots in Matlab
DataminingTools Inc
 
Matlab Visualizing Data
Matlab Visualizing Data
DataminingTools Inc
 
Programming Assignment Help
Programming Assignment Help
Programming Homework Help
 
Queues
Queues
maamir farooq
 
R Programming: Numeric Functions In R
R Programming: Numeric Functions In R
Rsquared Academy
 
Queue
Queue
A. S. M. Shafi
 
A Survey Of R Graphics
A Survey Of R Graphics
Dataspora
 
GNU octave
GNU octave
gauravmalav
 
Basic of octave matlab programming language
Basic of octave matlab programming language
Aulia Khalqillah
 
Doc 20180130-wa0004
Doc 20180130-wa0004
HarithaRanasinghe
 
Data visualization using the grammar of graphics
Data visualization using the grammar of graphics
Rupak Roy
 
Introduction to matlab
Introduction to matlab
Sourabh Bhattacharya
 
QMC: Undergraduate Workshop, Tutorial on 'R' Software - Yawen Guan, Feb 26, 2...
QMC: Undergraduate Workshop, Tutorial on 'R' Software - Yawen Guan, Feb 26, 2...
The Statistical and Applied Mathematical Sciences Institute
 
Introduction to Data Science With R Lab Record
Introduction to Data Science With R Lab Record
Lakshmi Sarvani Videla
 
Demo deck liveexp
Demo deck liveexp
Sean Royer
 
Introduccion a la generación de informes con R y LaTex
Introduccion a la generación de informes con R y LaTex
Antonio Contreras
 
Best corporate-r-programming-training-in-mumbai
Best corporate-r-programming-training-in-mumbai
Unmesh Baile
 
Instituto universitario de tecnologia
Instituto universitario de tecnologia
Luis Hernandez
 
Hydrogeological report of Barazan Plateau, North Goa District
Hydrogeological report of Barazan Plateau, North Goa District
People's Archive of Rural India
 
Trn 12
Trn 12
PMInstituteIndia
 

More Related Content

What's hot (16)

NCCU: Statistics in the Criminal Justice System, R basics and Simulation - Pr...
NCCU: Statistics in the Criminal Justice System, R basics and Simulation - Pr...
The Statistical and Applied Mathematical Sciences Institute
 
R studio
R studio
Kinza Irshad
 
Graph Plots in Matlab
Graph Plots in Matlab
DataminingTools Inc
 
Matlab Visualizing Data
Matlab Visualizing Data
DataminingTools Inc
 
Programming Assignment Help
Programming Assignment Help
Programming Homework Help
 
Queues
Queues
maamir farooq
 
R Programming: Numeric Functions In R
R Programming: Numeric Functions In R
Rsquared Academy
 
Queue
Queue
A. S. M. Shafi
 
A Survey Of R Graphics
A Survey Of R Graphics
Dataspora
 
GNU octave
GNU octave
gauravmalav
 
Basic of octave matlab programming language
Basic of octave matlab programming language
Aulia Khalqillah
 
Doc 20180130-wa0004
Doc 20180130-wa0004
HarithaRanasinghe
 
Data visualization using the grammar of graphics
Data visualization using the grammar of graphics
Rupak Roy
 
Introduction to matlab
Introduction to matlab
Sourabh Bhattacharya
 
QMC: Undergraduate Workshop, Tutorial on 'R' Software - Yawen Guan, Feb 26, 2...
QMC: Undergraduate Workshop, Tutorial on 'R' Software - Yawen Guan, Feb 26, 2...
The Statistical and Applied Mathematical Sciences Institute
 
Introduction to Data Science With R Lab Record
Introduction to Data Science With R Lab Record
Lakshmi Sarvani Videla
 

Viewers also liked (20)

Demo deck liveexp
Demo deck liveexp
Sean Royer
 
Introduccion a la generación de informes con R y LaTex
Introduccion a la generación de informes con R y LaTex
Antonio Contreras
 
Best corporate-r-programming-training-in-mumbai
Best corporate-r-programming-training-in-mumbai
Unmesh Baile
 
Instituto universitario de tecnologia
Instituto universitario de tecnologia
Luis Hernandez
 
Hydrogeological report of Barazan Plateau, North Goa District
Hydrogeological report of Barazan Plateau, North Goa District
People's Archive of Rural India
 
Trn 12
Trn 12
PMInstituteIndia
 
grlc Makes GitHub Taste Like Linked Data APIs
grlc Makes GitHub Taste Like Linked Data APIs
Albert Meroño-Peñuela
 
Intern Project - Erika Goto
Intern Project - Erika Goto
Erika Goto
 
Como es la cirugía de catarata
Como es la cirugía de catarata
ClinicaDNJ
 
Kerala livsetock trend state planning board 1966 to 2007
Kerala livsetock trend state planning board 1966 to 2007
People's Archive of Rural India
 
Iran oil and gas infrastructure
Iran oil and gas infrastructure
Dr. Arzu Javadova
 
The cosmopolitan corporation
The cosmopolitan corporation
Ranjith Thomas
 
Joint Indonesia-UK Conference on Computational Chemistry 2015
Joint Indonesia-UK Conference on Computational Chemistry 2015
Dasapta Erwin Irawan
 
Radar chart guide
Radar chart guide
丹 丹
 
Teaching Close Reading
Teaching Close Reading
theresa tinkle
 
Gender and migration cwds key findings
Gender and migration cwds key findings
People's Archive of Rural India
 
Metabolic acidosis
Metabolic acidosis
Marvie Visitacion
 
Perencanaan Pembangunan Prasarana Air untuk Lahan Perkebunan
Perencanaan Pembangunan Prasarana Air untuk Lahan Perkebunan
Dasapta Erwin Irawan
 
Law of demand
Law of demand
dhameliyakrupali
 
Facial nerve injury
Facial nerve injury
Shalina Gill
 
Demo deck liveexp
Demo deck liveexp
Sean Royer
 
Introduccion a la generación de informes con R y LaTex
Introduccion a la generación de informes con R y LaTex
Antonio Contreras
 
Best corporate-r-programming-training-in-mumbai
Best corporate-r-programming-training-in-mumbai
Unmesh Baile
 
Instituto universitario de tecnologia
Instituto universitario de tecnologia
Luis Hernandez
 
Hydrogeological report of Barazan Plateau, North Goa District
Hydrogeological report of Barazan Plateau, North Goa District
People's Archive of Rural India
 
grlc Makes GitHub Taste Like Linked Data APIs
grlc Makes GitHub Taste Like Linked Data APIs
Albert Meroño-Peñuela
 
Intern Project - Erika Goto
Intern Project - Erika Goto
Erika Goto
 
Como es la cirugía de catarata
Como es la cirugía de catarata
ClinicaDNJ
 
Kerala livsetock trend state planning board 1966 to 2007
Kerala livsetock trend state planning board 1966 to 2007
People's Archive of Rural India
 
Iran oil and gas infrastructure
Iran oil and gas infrastructure
Dr. Arzu Javadova
 
The cosmopolitan corporation
The cosmopolitan corporation
Ranjith Thomas
 
Joint Indonesia-UK Conference on Computational Chemistry 2015
Joint Indonesia-UK Conference on Computational Chemistry 2015
Dasapta Erwin Irawan
 
Radar chart guide
Radar chart guide
丹 丹
 
Teaching Close Reading
Teaching Close Reading
theresa tinkle
 
Perencanaan Pembangunan Prasarana Air untuk Lahan Perkebunan
Perencanaan Pembangunan Prasarana Air untuk Lahan Perkebunan
Dasapta Erwin Irawan
 
Facial nerve injury
Facial nerve injury
Shalina Gill
 
Ad

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

Chart and graphs in R programming language
Chart and graphs in R programming language
CHANDAN KUMAR
 
a9bf73_Introduction to Matplotlib01.pptx
a9bf73_Introduction to Matplotlib01.pptx
Rahidkhan10
 
Exploratory data analysis using r
Exploratory data analysis using r
Tahera Shaikh
 
Matplotlib_Presentation jk jdjklskncncsjkk
Matplotlib_Presentation jk jdjklskncncsjkk
sarfarazkhanwattoo
 
DA_THEORY_PPT DA_THEORY_PPT DA_THEORY_PPT
DA_THEORY_PPT DA_THEORY_PPT DA_THEORY_PPT
20harish08
 
R training5
R training5
Hellen Gakuruh
 
Tools for research plotting
Tools for research plotting
Nimrita Koul
 
R programming.pptx r language easy concept
R programming.pptx r language easy concept
MuhammadjunaidgulMuh1
 
Tools for research plotting
Tools for research plotting
Nimrita Koul
 
Introduction to R Short course Fall 2016
Introduction to R Short course Fall 2016
Spencer Fox
 
UNIT_4_data visualization.pptx
UNIT_4_data visualization.pptx
BhagyasriPatel2
 
Presentation: Plotting Systems in R
Presentation: Plotting Systems in R
Ilya Zhbannikov
 
Broom: Converting Statistical Models to Tidy Data Frames
Broom: Converting Statistical Models to Tidy Data Frames
Work-Bench
 
dplyr
dplyr
Romain Francois
 
Rtips123
Rtips123
Mahendra Babu
 
Collect 50 or more paired quantitative data items. You may use a met.pdf
Collect 50 or more paired quantitative data items. You may use a met.pdf
ivylinvaydak64229
 
M4_DAR_part1. module part 4 analystics with r
M4_DAR_part1. module part 4 analystics with r
LalithauLali
 
Coding and Cookies: R basics
Coding and Cookies: R basics
C. Tobin Magle
 
Concept mapping patient initials, age, gender and admitting d
Concept mapping patient initials, age, gender and admitting d
ARIV4
 
R_CheatSheet.pdf
R_CheatSheet.pdf
MariappanR3
 
Chart and graphs in R programming language
Chart and graphs in R programming language
CHANDAN KUMAR
 
a9bf73_Introduction to Matplotlib01.pptx
a9bf73_Introduction to Matplotlib01.pptx
Rahidkhan10
 
Exploratory data analysis using r
Exploratory data analysis using r
Tahera Shaikh
 
Matplotlib_Presentation jk jdjklskncncsjkk
Matplotlib_Presentation jk jdjklskncncsjkk
sarfarazkhanwattoo
 
DA_THEORY_PPT DA_THEORY_PPT DA_THEORY_PPT
DA_THEORY_PPT DA_THEORY_PPT DA_THEORY_PPT
20harish08
 
Tools for research plotting
Tools for research plotting
Nimrita Koul
 
R programming.pptx r language easy concept
R programming.pptx r language easy concept
MuhammadjunaidgulMuh1
 
Tools for research plotting
Tools for research plotting
Nimrita Koul
 
Introduction to R Short course Fall 2016
Introduction to R Short course Fall 2016
Spencer Fox
 
UNIT_4_data visualization.pptx
UNIT_4_data visualization.pptx
BhagyasriPatel2
 
Presentation: Plotting Systems in R
Presentation: Plotting Systems in R
Ilya Zhbannikov
 
Broom: Converting Statistical Models to Tidy Data Frames
Broom: Converting Statistical Models to Tidy Data Frames
Work-Bench
 
Collect 50 or more paired quantitative data items. You may use a met.pdf
Collect 50 or more paired quantitative data items. You may use a met.pdf
ivylinvaydak64229
 
M4_DAR_part1. module part 4 analystics with r
M4_DAR_part1. module part 4 analystics with r
LalithauLali
 
Coding and Cookies: R basics
Coding and Cookies: R basics
C. Tobin Magle
 
Concept mapping patient initials, age, gender and admitting d
Concept mapping patient initials, age, gender and admitting d
ARIV4
 
R_CheatSheet.pdf
R_CheatSheet.pdf
MariappanR3
 
Ad

More from Rsquared Academy (20)

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

Recently uploaded (20)

The Influence off Flexible Work Policies
The Influence off Flexible Work Policies
sales480687
 
Residential Zone 4 for industrial village
Residential Zone 4 for industrial village
MdYasinArafat13
 
ppt somu_Jarvis_AI_Assistant_presen.pptx
ppt somu_Jarvis_AI_Assistant_presen.pptx
MohammedumarFarhan
 
PPT2 W1L2.pptx.........................................
PPT2 W1L2.pptx.........................................
palicteronalyn26
 
最新版美国约翰霍普金斯大学毕业证(JHU毕业证书)原版定制
最新版美国约翰霍普金斯大学毕业证(JHU毕业证书)原版定制
Taqyea
 
Artigo - Playing to Win.planejamento docx
Artigo - Playing to Win.planejamento docx
KellyXavier15
 
Indigo dyeing Presentation (2).pptx as dye
Indigo dyeing Presentation (2).pptx as dye
shreeroop1335
 
Attendance Presentation Project Excel.pptx
Attendance Presentation Project Excel.pptx
s2025266191
 
Indigo_Airlines_Strategy_Presentation.pptx
Indigo_Airlines_Strategy_Presentation.pptx
mukeshpurohit991
 
Camuflaje Tipos Características Militar 2025.ppt
Camuflaje Tipos Características Militar 2025.ppt
e58650738
 
Data Visualisation in data science for students
Data Visualisation in data science for students
confidenceascend
 
Reliability Monitoring of Aircrfat commerce
Reliability Monitoring of Aircrfat commerce
Rizk2
 
Model Evaluation & Visualisation part of a series of intro modules for data ...
Model Evaluation & Visualisation part of a series of intro modules for data ...
brandonlee626749
 
NASA ESE Study Results v4 05.29.2020.pptx
NASA ESE Study Results v4 05.29.2020.pptx
CiroAlejandroCamacho
 
Communication_Skills_Class10_Visual.pptx
Communication_Skills_Class10_Visual.pptx
namanrastogi70555
 
All the DataOps, all the paradigms .
All the DataOps, all the paradigms .
Lars Albertsson
 
11_L2_Defects_and_Trouble_Shooting_2014[1].pdf
11_L2_Defects_and_Trouble_Shooting_2014[1].pdf
gun3awan88
 
@Reset-Password.pptx presentakh;kenvtion
@Reset-Password.pptx presentakh;kenvtion
MarkLariosa1
 
Presentation by Tariq & Mohammed (1).pptx
Presentation by Tariq & Mohammed (1).pptx
AbooddSandoqaa
 
Boost Business Efficiency with Professional Data Entry Services
Boost Business Efficiency with Professional Data Entry Services
eloiacs eloiacs
 
The Influence off Flexible Work Policies
The Influence off Flexible Work Policies
sales480687
 
Residential Zone 4 for industrial village
Residential Zone 4 for industrial village
MdYasinArafat13
 
ppt somu_Jarvis_AI_Assistant_presen.pptx
ppt somu_Jarvis_AI_Assistant_presen.pptx
MohammedumarFarhan
 
PPT2 W1L2.pptx.........................................
PPT2 W1L2.pptx.........................................
palicteronalyn26
 
最新版美国约翰霍普金斯大学毕业证(JHU毕业证书)原版定制
最新版美国约翰霍普金斯大学毕业证(JHU毕业证书)原版定制
Taqyea
 
Artigo - Playing to Win.planejamento docx
Artigo - Playing to Win.planejamento docx
KellyXavier15
 
Indigo dyeing Presentation (2).pptx as dye
Indigo dyeing Presentation (2).pptx as dye
shreeroop1335
 
Attendance Presentation Project Excel.pptx
Attendance Presentation Project Excel.pptx
s2025266191
 
Indigo_Airlines_Strategy_Presentation.pptx
Indigo_Airlines_Strategy_Presentation.pptx
mukeshpurohit991
 
Camuflaje Tipos Características Militar 2025.ppt
Camuflaje Tipos Características Militar 2025.ppt
e58650738
 
Data Visualisation in data science for students
Data Visualisation in data science for students
confidenceascend
 
Reliability Monitoring of Aircrfat commerce
Reliability Monitoring of Aircrfat commerce
Rizk2
 
Model Evaluation & Visualisation part of a series of intro modules for data ...
Model Evaluation & Visualisation part of a series of intro modules for data ...
brandonlee626749
 
NASA ESE Study Results v4 05.29.2020.pptx
NASA ESE Study Results v4 05.29.2020.pptx
CiroAlejandroCamacho
 
Communication_Skills_Class10_Visual.pptx
Communication_Skills_Class10_Visual.pptx
namanrastogi70555
 
All the DataOps, all the paradigms .
All the DataOps, all the paradigms .
Lars Albertsson
 
11_L2_Defects_and_Trouble_Shooting_2014[1].pdf
11_L2_Defects_and_Trouble_Shooting_2014[1].pdf
gun3awan88
 
@Reset-Password.pptx presentakh;kenvtion
@Reset-Password.pptx presentakh;kenvtion
MarkLariosa1
 
Presentation by Tariq & Mohammed (1).pptx
Presentation by Tariq & Mohammed (1).pptx
AbooddSandoqaa
 
Boost Business Efficiency with Professional Data Entry Services
Boost Business Efficiency with Professional Data Entry Services
eloiacs eloiacs
 

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