OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base...

45
Data visualisation techniques using R **************** Osama Mahmoud *** Website: http://osmahmoud.com E-mail: [email protected] ***** 30 April 2019

Transcript of OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base...

Page 1: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Data visualisation techniques using R

****************Osama Mahmoud

***Website: http://osmahmoud.comE-mail: [email protected]

*****30 April 2019

Page 2: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Goals

In this session, we aim to cover:What the R base graphics and their types are.How to produce base plots in R.How to save your generated graphics.How to use ggplot2 in R to produce advanced graphics.What the building-blocks of ggplot2 graphs are.

Osama Mahmoud Data visualisation techniques using R 1 / 44

Page 3: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Contents

1 Introduction to data visualisation

2 Overview of base graphics

3 Advanced graphics

4 Plot building-blocks

Osama Mahmoud Data visualisation techniques using R 2 / 44

Page 4: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Types of R graphics

Base graphics.Grid graphics.Lattice graphics.ggplot2 graphics.

Osama Mahmoud Data visualisation techniques using R 3 / 44

Page 5: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Base graphics

Osama Mahmoud Data visualisation techniques using R 4 / 44

Page 6: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Installing the R package: BristolVis

> install.packages("drat")

> drat::addRepo("statcourses")

> install.packages("BristolVis", type="source")

Osama Mahmoud Data visualisation techniques using R 5 / 44

Page 7: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Overview of base graphics

Graphics can be easily created in R and subsequently included inWord, Power Point, LATEX, etc.Let’s plot a simple graphic:

> plot(rate ~ conc, data = Puromycin)This implicitly opens a new graphics window.

0.0 0.2 0.4 0.6 0.8 1.0

5010

015

020

0

conc

rate

Osama Mahmoud Data visualisation techniques using R 6 / 44

Page 8: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Overview of base graphics

Change settings of active graphic window> par(mfrow = c(1,2), mar = c(4,4,0,0) + 0.1)> x <- seq(-3,3, 0.1)> plot(x, x^2, type = ’l’)> plot(x, x^3, type = ’l’)

−3 −2 −1 0 1 2 3

02

46

8

x

x^2

−3 −2 −1 0 1 2 3

−20

−10

010

20

x

x^3

Osama Mahmoud Data visualisation techniques using R 7 / 44

Page 9: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Overview of base graphics

Close active graphics window:

> dev.off()

Close all graphics windows:> graphics.off()

Osama Mahmoud Data visualisation techniques using R 8 / 44

Page 10: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Histograms

Osama Mahmoud Data visualisation techniques using R 9 / 44

Page 11: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Histograms

Simple histogram (next slide left)

> data(birthweight, package = “BristolVis”)> hist(birthweight$weightgain)

with a fixed set of “bars”: (breaks give number of cut-points)

> hist(birthweight$weightgain, breaks = 3)with a defined scale for the y-axis:

> hist(birthweight$weightgain, breaks = 3, ylim = c(0,10))with colored bars:

> hist(birthweight$weightgain, breaks = 3, ylim = c(0,10), col = gray(4:8 / 8))

with arbitrary text, vertical and double text size (next slide right)

> text(1500, 5, "some text", srt = 90, cex = 2)

Osama Mahmoud Data visualisation techniques using R 10 / 44

Page 12: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Histograms

Histogram of birthweight$weightgain

birthweight$weightgain

Fre

qu

en

cy

500 1000 1500 2000 2500 3000 3500

01

23

45

Histogram of the weight gain

WG

Fre

qu

en

cy

0 1000 2000 3000 4000

02

46

81

0

so

me

text

Osama Mahmoud Data visualisation techniques using R 11 / 44

Page 13: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Bar plots

Osama Mahmoud Data visualisation techniques using R 12 / 44

Page 14: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Bar plots

Simple bar plot (next slide left)

> data(med, package = “BristolVis”)> treatment = table(med$treatment)> barplot(treatment, ylim = c(0, 500))

stacked bar plot:

> health_treat = table(med$health, med$treatment)> barplot(health_treat, ylim = c(0, 500))

with juxtaposed bars:barplot(health_treat, ylim = c(0, 300), beside = TRUE)

with legend (next slide right)

> barplot(health_treat, ylim = c(0, 300), beside = TRUE,legend.text = rownames(health_treat))

Osama Mahmoud Data visualisation techniques using R 13 / 44

Page 15: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Bar plots

Existing New

01

00

20

03

00

40

05

00

Existing New

Poor

Fair

Good

nu

mb

er

of

pa

tie

nts

05

01

00

15

02

00

25

03

00

Osama Mahmoud Data visualisation techniques using R 14 / 44

Page 16: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Box plots

Osama Mahmoud Data visualisation techniques using R 15 / 44

Page 17: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Box plots

Simple box plot (next slide left)

> boxplot(birthweight$weight)

grouped by sex:

> boxplot(weight ~ sex, data = birthweight)

with new labels for sex, main title and a defined y-scale (next slide right)

> boxplot(weight ~ sex, data = birthweight, names =c("girls", "boys"), ylab = "birth weight [g]", ylim =c(2000, 4000), main = "Distribution of birth weight")

with additional line:> abline(h = 3000, col = "gray", lty = 4)

Osama Mahmoud Data visualisation techniques using R 16 / 44

Page 18: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Box plots2

40

02

60

02

80

03

00

03

20

03

40

03

60

0

girls boys

20

00

25

00

30

00

35

00

40

00

Distribution of birth weight

bir

th w

eig

ht

[g]

Osama Mahmoud Data visualisation techniques using R 17 / 44

Page 19: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Scatter plots

Osama Mahmoud Data visualisation techniques using R 18 / 44

Page 20: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Scatter plots

Simple scatter plot (next slide left)

> plot(weightgain ~ weight, data = birthweight)

for a subset:

> plot(weightgain ~ weight, data = birthweight, subset =(sex == "F"))

with colored solid points by sex and add a legend (next slide right)

> plot(weightgain ~ weight, data = birthweight, subset =(sex == "M"), col = "blue", pch = 20)> points(weightgain ~ weight, data = birthweight, subset =(sex == "F"), col = "red", pch = 20) # add girls data> legend("bottomleft", title = "sex", legend = c("girls","boys"), col = c("red","blue"), pch = 20) # add legend

Osama Mahmoud Data visualisation techniques using R 19 / 44

Page 21: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Scatter plots

2400 2600 2800 3000 3200 3400 3600

10

00

15

00

20

00

25

00

30

00

weight

we

igh

tga

in

3000 3200 3400 3600

15

00

20

00

25

00

30

00

Weight gain (for boys and girls)

weight [g]

we

igh

t g

ain

(g

)

sex

girls

boys

Osama Mahmoud Data visualisation techniques using R 20 / 44

Page 22: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Examples of the graphic library

An overview of available demos for the built-in R library (graphics):> demo(graphics)

Osama Mahmoud Data visualisation techniques using R 21 / 44

Page 23: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Saving plots

Osama Mahmoud Data visualisation techniques using R 22 / 44

Page 24: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Saving plots

Graphics can be saved directly from within R using different devices,e.g. postscript(), pdf(), bmp(), (see ?Devices)For publications vector graphics such as PDFs or postscript files arepreferable to pixel graphics such as jpg, bmp, etc.

> pdf("Fig1.pdf", width = 10, height = 7)> boxplot(weight ~ sex, data = birthweight)> dev.off()

Osama Mahmoud Data visualisation techniques using R 23 / 44

Page 25: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Advanced Graphics Usingggplot2

Osama Mahmoud Data visualisation techniques using R 24 / 44

Page 26: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Remember: Using base graphics> plot(med[med$health=="Poor",]$age, med[med$health=="Poor",]$time,xlim=c(30,72), ylim=c(0.5,13))> points(med[med$health=="Fair",]$age, med[med$health=="Fair",]$time,col=2)

> points(med[med$health=="Good",]$age, med[med$health=="Good",]$time,

col=4)

●●

●●

●●

● ●

●●

●●

●●

● ●

●●

●●●

●●

●●

●●●●

●●

●●

●●

30 40 50 60 70

02

46

810

12

med[med$health == "Poor", ]$age

med

[med

$hea

lth =

= "P

oor"

, ]$t

ime

●● ●

●●

● ●●

●●

●● ●●

●●●

● ●●

●●●●

● ●

●●

●●

●●

●●

●● ●

●●

●●

●●

● ●●

●●●

●●

●●

●●

● ●

● ●

●●

●●

● ●

●●

●●

●●

●●

●●

●●

● ●●

●●

● ●●

●●●

●●●

●●●

●●

●●

●●

● ● ●

●●

● ●

●● ●

●●

●●

●●●

●● ●●

●●●

●●

● ● ●

●●●

●●

● ● ●

●●

●●

●●

●●

●●●

●●

●●

● ●

● ●

● ●●

●●●

●●

●●●

●●

●●

●●

●●●

●● ●●●

●●

●●

●●

●● ●●

●●●●

●●

●● ●● ●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●●

●● ●

●● ●

●●

●●

●●

●● ●●●

●●●

●●

● ●●●

● ●●

●●

●●

●●

● ●●●

●●

●●

●●

●●●

●●

●●

●●

● ●

●● ●

●●

●●

●●

●●

●●●

●●

●●● ●

●●

●●

● ●

●●

●● ●

●●

● ●●

●●

●●

● ●

●●

●●●

●●

●●●

●●

●●

●●

●●

●●●

●●

●●●

●●

●●

●●●

●●

●●

●● ●

Osama Mahmoud Data visualisation techniques using R 25 / 44

Page 27: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Remember: Using base graphics

We had to manually set the scales using the xlim and ylimparameters.

We had not created a legend. We would need to use the legendfunction to create one.

The default axis labels were terrible!

Osama Mahmoud Data visualisation techniques using R 26 / 44

Page 28: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Equivalent graphics using ggplot2

> library(ggplot2)> g = ggplot(data=med, aes(x=age, y=time))> g + geom_point(aes(colour=health))

●●

●●

● ●

● ●

●●

●●

● ●

● ●

●● ●

●●

●●

●●

●●

●●

● ●

●●

●●

●●

●●

●●

● ●

●●

●●

● ●

● ●

●●

●●

●●

●●

● ●

● ●

●●

● ●

●●

● ●

●●

●●

●●●

● ●

● ●

●●

● ● ●

●●

●●

●●

●●

●●

●●

●●

●●

0.0

2.5

5.0

7.5

10.0

12.5

40 50 60 70

age

time

factor(health)

Poor

Fair

Good

Osama Mahmoud Data visualisation techniques using R 27 / 44

Page 29: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Factor of point sizes

g + geom_point(aes(size=health))

●●●

●●

●●

●●

●●

●●

●●●

●●●

●●

●●

●●

●●

●●

●●

●●

● ●

●●

●●

●●

●●

●●

●●●

●●●●

●●●

● ●

●●

● ●●

●●

●●

●●

●● ●

● ●

●●

●●●●

●● ●

●●

●●●

●●

●●

●●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

● ●

●●

●●

●●

●●

●●

●●

● ●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●

●●●

●●

●●●

●●

●●

●●

●●

●●

●●●●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●

●●

●●

●●●

●●●

●●● ●

●●

●●

●●

●●

●●

●●

●●

●●

●●

●●●

●●

●●

●●●

●●

●●●

●●

●●

●●

●●

●●

●●

●●●

●●

●●●

●●

●●●

●●

●●

●●

●●

●●

●●●

●●●

●●●

●●

●●

●●

●●●

●●

● ●

●●

●●●

●●

●●

●●●

●●

●●

●●●●

●●

●●

● ●●

●●

●●●

●●●●

● ●

●●

●●●

●●

●●●●

●●

●●

●●

●●

●●

●●●

●●●

●●

●●

●●●

●●

●●

●●

●● ●●

●●

0.0

2.5

5.0

7.5

10.0

12.5

40 50 60 70

age

time

health

Poor

Fair

Good

Osama Mahmoud Data visualisation techniques using R 28 / 44

Page 30: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Example of a line chart

g + geom_line(aes(colour=health, size = health)))

0.0

2.5

5.0

7.5

10.0

12.5

40 50 60 70

age

time

health

Poor

Fair

Good

Osama Mahmoud Data visualisation techniques using R 29 / 44

Page 31: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Geometric objects

Points, bars and lines are examples of geom’s. Some useful standardgeoms and their equivalent base graphic counter part:

Plot Name Geom Base graphicBar chart bar barplotBox-and-whisker boxplot boxplotHistogram histogram histLine plot line plot and linesScatter plot point plot and points

Osama Mahmoud Data visualisation techniques using R 30 / 44

Page 32: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

More complicated functions

The idea of graphical layers, enables constructing more complicatedfunctions, e.g.:p = ggplot(mpg, aes(x = displ, y = cty)) +geom_point(aes(colour=factor(cyl))) +stat_smooth(aes(colour=factor(cyl)))

Osama Mahmoud Data visualisation techniques using R 31 / 44

Page 33: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Understanding ggplot2 philosophy

Each ggplot command adds iteratively layers. A single layer maycomprise of four elements:

an aesthetic and data mapping;a geometric object (geom);a statistical transformation (stat);a position adjustment, i.e. how should overlapped objects be handled.

Osama Mahmoud Data visualisation techniques using R 32 / 44

Page 34: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Understanding ggplot2 philosophy

For example, the command:g + geom_point(aes(colour=health))

actually calls (in the background) the command:g + layer(data = med, #inheritedmapping = aes(color=health), #x and y are inherited.stat = "identity",geom = "point",position = "identity",params = list(na.rm=FALSE))

Osama Mahmoud Data visualisation techniques using R 33 / 44

Page 35: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Plot building-blocks

Osama Mahmoud Data visualisation techniques using R 34 / 44

Page 36: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Initial plot object

An initial ggplot object, can be setup using the ggplot() functionwhich has two arguments:data (takes a data frame)an aesthetic mapping (creates default aesthetic attributes)

g = ggplot(data=mpg, mapping=aes(x=displ, y=cty,colour=factor(cyl)))Or equivelently,g = ggplot(mpg, aes(displ, cty, colour=factor(cyl)))

doesn’t actually produce anything to be displayed, it just sets the intialplot object. We need to add layers for that to happen.

Osama Mahmoud Data visualisation techniques using R 35 / 44

Page 37: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

The geom_ functions

The geom_ functions perform the actual rendering in a plot, e.g. a linegeom will create a line plot and a point geom creates a scatter plot.

Each geom has a list of aesthetics that it accepts such as x , y ,colour and size.

However, some geoms have unique elements. For example, thegeom_errorbar requires arguments ymax and ymin.

The full list of aesthetics can be displayed by:

> ggplot2:::.all_aesthetics

Osama Mahmoud Data visualisation techniques using R 36 / 44

Page 38: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

The geom_ functions

This table gives names and descriptions of some commonly usedgeoms:

Name Descriptionabline Line, specified by slope and interceptboxplot Box and whiskers plotdensity Kernel density plothistogram Histogramsjitter Individual points are jittered to avoid overlapstep Connect observations by stairs

Osama Mahmoud Data visualisation techniques using R 37 / 44

Page 39: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Combining geoms

I will show how to combine more that one geom function to produce abit more complex plots. If we consider the mpg data set, a base ggplotobject:g = ggplot(mpg, aes(x=factor(cyl), y=hwy)) will do nothing.Now we’ll create a boxplot: (g1 = g + geom_boxplot())

●●

20

30

40

5 6 7

cyl

hwy

Osama Mahmoud Data visualisation techniques using R 38 / 44

Page 40: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Combining geoms

Previous figure was a boxplot of all the mpg data, a more useful plotwould be to have individual boxplots conditional on number of cylinders:(g2 = g + geom_boxplot(aes(x=factor(cyl), group=cyl)))

●●

●●

20

30

40

4 5 6 8

factor(cyl)

hwy

Osama Mahmoud Data visualisation techniques using R 39 / 44

Page 41: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Combining geoms

We are not restricted to a single geom. When data sets are reasonablysmall, it is useful to display the data on top of the boxplots:(g3 = g2 + geom_dotplot(aes(x=factor(cyl), group=cyl),binaxis="y", stackdir="center", binwidth=0.25,stackratio=2))

●●

●●

● ● ● ●

● ●

● ● ● ● ●

● ● ● ● ● ● ● ● ● ● ●

● ● ● ● ● ● ● ● ● ●

● ● ●

● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●

● ● ● ●

● ● ● ● ● ● ●

● ● ● ●

● ●

● ●

● ●

● ●

● ● ●

● ● ● ● ● ● ● ● ● ● ● ● ●

● ●

● ● ● ● ● ● ●

● ● ● ●

● ● ● ●

● ● ●

● ● ● ● ● ● ● ● ● ●

● ● ● ● ● ● ● ●

● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●

● ● ● ●

● ● ●

● ● ● ● ●

● ●

● ● ● ● ● ● ● ● ● ●

● ● ● ● ● ● ●

● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● ●

● ● ● ● ● ● ● ●

● ● ● ● ● ●

● ● ●

● ●

● ● ●

● ●

● ●

20

30

40

4 5 6 8

cyl

hwy

Osama Mahmoud Data visualisation techniques using R 40 / 44

Page 42: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Standard plots

There are a few standard geom ’s that are particular useful:

geom_line : a line plot.geom_boxplot : produces a boxplot.geom_point : a scatter plot.geom_dotplot: a dot plot.geom_bar : produces a standard barplot that counts the x values.geom_text : adds labels to specified points (as geom_point but drawlabels rather than points).geom_raster: Similar to levelplot (heatmap).

Osama Mahmoud Data visualisation techniques using R 41 / 44

Page 43: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Useful links

Choice of graphic coloursNames of colours in various formats:http://colorbrewer2.org/

R Course: Shiny web-pageThe RVis tool for learners of data visualisation using R:http://bristol-medical-stat.bristol.ac.uk:3838/RVis/

R package: BristolVis web-pageThe BristolVis package that associated with these materials:https://github.com/statcourses/BristolVis

Osama Mahmoud Data visualisation techniques using R 42 / 44

Page 44: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

References

888

Osama Mahmoud Data visualisation techniques using R 43 / 44

Page 45: OsamaMahmoud *** Website: E-mail ......Osama Mahmoud Data visualisation techniques using R 2/44 Base graphics IntroductionBase graphicsAdvanced graphicsBuilding-blocks Types of R graphics

Base graphics Introduction Base graphics Advanced graphics Building-blocks

Thank You

Osama Mahmoud Data visualisation techniques using R 44 / 44