advanced graphics using r · goals in this sesseion, you will be learned: whatggplot2 is....

29
Advanced Graphics Using R **************** Osama Mahmoud *** Website: http://osmahmoud.com E-mail: [email protected] *****

Upload: others

Post on 06-Oct-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced Graphics Using R

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

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

*****

Page 2: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Goals

In this sesseion, you will be learned:

What ggplot2 is.How to use ggplot2 in R to produce advanced graphics.What the building-blocks of ggplot2 graphs are.

Osama Mahmoud Session 05: Advanced Graphics Using R 1 / 28

Page 3: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 Building-blocks

Contents

1 Introduction to data visualisation

2 Overview of ggplot2

3 Plot building-blocks

Osama Mahmoud Session 05: Advanced Graphics Using R 2 / 28

Page 4: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 Building-blocks

Graphics in R: Background

Installing packages in R is straightforward. For example:> install.packages("ggplot2")

Then, you can simply load it to your R session whenever needed:> library("ggplot2")

Osama Mahmoud Session 05: Advanced Graphics Using R 3 / 28

Page 5: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 Building-blocks

Types of R graphics

Osama Mahmoud Session 05: Advanced Graphics Using R 4 / 28

Page 6: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 Building-blocks

Types of R graphics

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

Osama Mahmoud Session 05: Advanced Graphics Using R 5 / 28

Page 7: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 Building-blocks

Overview of ggplot2

Osama Mahmoud Session 05: Advanced Graphics Using R 6 / 28

Page 8: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 Building-blocks

Installing Course R package: BristolVis

> install.packages("drat")

> drat::addRepo("statcourses")

> install.packages("BristolVis")

Osama Mahmoud Session 05: Advanced Graphics Using R 7 / 28

Page 9: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 Building-blocks

Basic plots 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 Session 05: Advanced Graphics Using R 8 / 28

Page 10: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 Building-blocks

Basic plots 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 Session 05: Advanced Graphics Using R 9 / 28

Page 11: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 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 Session 05: Advanced Graphics Using R 10 / 28

Page 12: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 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 Session 05: Advanced Graphics Using R 11 / 28

Page 13: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 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 Session 05: Advanced Graphics Using R 12 / 28

Page 14: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 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 Session 05: Advanced Graphics Using R 13 / 28

Page 15: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 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 Session 05: Advanced Graphics Using R 14 / 28

Page 16: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 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 Session 05: Advanced Graphics Using R 15 / 28

Page 17: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 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 Session 05: Advanced Graphics Using R 16 / 28

Page 18: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 Building-blocks

Plot building-blocks

Osama Mahmoud Session 05: Advanced Graphics Using R 17 / 28

Page 19: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 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 Session 05: Advanced Graphics Using R 18 / 28

Page 20: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 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 Session 05: Advanced Graphics Using R 19 / 28

Page 21: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 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 Session 05: Advanced Graphics Using R 20 / 28

Page 22: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 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 Session 05: Advanced Graphics Using R 21 / 28

Page 23: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 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 Session 05: Advanced Graphics Using R 22 / 28

Page 24: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 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 Session 05: Advanced Graphics Using R 23 / 28

Page 25: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 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 Session 05: Advanced Graphics Using R 24 / 28

Page 26: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 Building-blocks

Standard plots

To generate a bar plot, e.g. for the status of effect observations in themed data set, the following code can be used:ggplot(med, aes(x=status)) + geom_bar()

0

200

400

600

Censored Observed

status

coun

t

Osama Mahmoud Session 05: Advanced Graphics Using R 25 / 28

Page 27: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 Building-blocks

Standard plots

An example of a geom_raster:ggplot(med, aes(gender, health)) +geom_raster(aes(fill=time))

Osama Mahmoud Session 05: Advanced Graphics Using R 26 / 28

Page 28: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 Building-blocks

Useful links

GithubRepository of course packages:https://statcourses.github.io/

Web-page of the courseThe BristolVis tool for learners of data visualisation using R:https://github.com/statcourses/BristolVis

Osama Mahmoud Session 05: Advanced Graphics Using R 27 / 28

Page 29: Advanced Graphics Using R · Goals In this sesseion, you will be learned: Whatggplot2 is. Howtouseggplot2 inRtoproduceadvancedgraphics. Whatthebuilding-blocksof ggplot2 graphsare

Advanced graphics Introduction ggplot2 Building-blocks

Thank You

Osama Mahmoud Session 05: Advanced Graphics Using R 28 / 28