Graphics in R STAT 133. Gaston Sanchez. Department of Statistics, UC Berkeley

Similar documents
Introduction to R: Day 2 September 20, 2017

Introduction for heatmap3 package

Quick Guide for pairheatmap Package

Basic R QMMA. Emanuele Taufer. 2/19/2018 Basic R (1)

Getting started with ggplot2

Objects, Class and Attributes

Intro to R Graphics Center for Social Science Computation and Research, 2010 Stephanie Lee, Dept of Sociology, University of Washington

enote 1 1 enote 1 Introduction to R Updated: 01/02/16 kl. 16:10

Introduction to Huxtable David Hugh-Jones

Computing with large data sets

Plotting Complex Figures Using R. Simon Andrews v

Configuring Figure Regions with prepplot Ulrike Grömping 03 April 2018

IST 3108 Data Analysis and Graphics Using R Week 9

Advanced Graphics with R

This is a simple example of how the lasso regression model works.

Statistical Programming with R

Introduction Basics Simple Statistics Graphics. Using R for Data Analysis and Graphics. 4. Graphics

Will Landau. January 24, 2013

Regression Models Course Project Vincent MARIN 28 juillet 2016

Package pathdiagram. R topics documented: August 29, 2016

Chapter 7. The Data Frame

getting started in R

Graphics #1. R Graphics Fundamentals & Scatter Plots

Az R adatelemzési nyelv

Resources for statistical assistance. Quantitative covariates and regression analysis. Methods for predicting continuous outcomes.

INTRODUCTION TO R. Basic Graphics

Create Awesome LaTeX Table with knitr::kable and kableextra Hao Zhu

Dr. Junchao Xia Center of Biophysics and Computational Biology. Fall /6/ /13

Plotting: An Iterative Process

Advances in integrating statistical inference

Statistical Programming Camp: An Introduction to R

AA BB CC DD EE. Introduction to Graphics in R

Shrinkage of logarithmic fold changes

Package EnQuireR. R topics documented: February 19, Type Package Title A package dedicated to questionnaires Version 0.

Create Awesome LaTeX Table with knitr::kable and kableextra

Introduction to R for Epidemiologists

Graphics - Part III: Basic Graphics Continued

R Visualizing Data. Fall Fall 2016 CS130 - Intro to R 1

Stat 241 Review Problems

The nor1mix Package. August 3, 2006

Types of Plotting Functions. Managing graphics devices. Further High-level Plotting Functions. The plot() Function

DSCI 325: Handout 18 Introduction to Graphics in R

The nor1mix Package. June 12, 2007

Spring 2017 CS130 - Intro to R 1 R VISUALIZING DATA. Spring 2017 CS130 - Intro to R 2

R Graphics. Paul Murrell. The University of Auckland. R Graphics p.1/47

An Introduction to R Graphics

Install RStudio from - use the standard installation.

Package waterfall. R topics documented: February 15, Type Package. Version Date Title Waterfall Charts in R

Package arphit. March 28, 2019

Handling Missing Values

BIMM-143: INTRODUCTION TO BIOINFORMATICS (Lecture 5)

WEEK 13: FSQCA IN R THOMAS ELLIOTT

Paint/Draw Tools. Foreground color. Free-form select. Select. Eraser/Color Eraser. Fill Color. Color Picker. Magnify. Pencil. Brush.

Lab 1 Introduction to R

Matrix algebra. Basics

Package beanplot. R topics documented: February 19, Type Package

Package scatterd3. March 10, 2018

Chapter 5 An Introduction to Basic Plotting Tools

Display Lists in grid

The Tidyverse BIOF 339 9/25/2018

R Graph Essentials. Use R's powerful graphing capabilities to design and create professional-level graphics. David Alexander Lillis

CREATING DESMOS ETOOLS

Intro to R for Epidemiologists

The Basics of Plotting in R

DC2 File Format. 1. Header line 2. Entity line 3. Point line 4. String line

Control Flow Structures

PLoT: Graph Plotting

grammar statistical graphics Building a in Clojure Kevin Lynagh 2012 November 9 Øredev Keming Labs Malmö, Sweden

The xtablelist Gallery. Contents. David J. Scott. January 4, Introduction 2. 2 Single Column Names 7. 3 Multiple Column Names 9.

Introduction to R. Biostatistics 615/815 Lecture 23

Package sciplot. February 15, 2013

DATA VISUALIZATION WITH GGPLOT2. Grid Graphics

Basics of Plotting Data

Accessing Databases from R

Display Lists in grid

Package sankey. R topics documented: October 22, 2017

Solution Notes. COMP 151: Terms Test

Univariate Data - 2. Numeric Summaries

Introduction to R Software

Package rtsplot. September 15, 2018

Package munfold. R topics documented: February 8, Type Package. Title Metric Unfolding. Version Date Author Martin Elff

MBV4410/9410 Fall Bioinformatics for Molecular Biology. Introduction to R

Glossary Common Core Curriculum Maps Math/Grade 6 Grade 8

Common R commands used in Data Analysis and Statistical Inference

A Handbook of Statistical Analyses Using R. Brian S. Everitt and Torsten Hothorn

Log1 Contest Round 2 Theta Circles, Parabolas and Polygons. 4 points each

Preliminary Figures for Renormalizing Illumina SNP Cell Line Data

EXAMINATIONS 2017 TRIMESTER 2

Common Sta 101 Commands for R. 1 One quantitative variable. 2 One categorical variable. 3 Two categorical variables. Summary statistics

Exploratory Projection Pursuit

Package prettygraphs

Visualizing high-dimensional data:

1. Complete these exercises to practice creating user functions in small sketches.

S206E Lecture 3, 5/15/2017, Rhino 2D drawing an overview

Lesson 1. Unit 2 Practice Problems. Problem 2. Problem 1. Solution 1, 4, 5. Solution. Problem 3

GS Analysis of Microarray Data

Lab 3 - Part A. R Graphics Fundamentals & Scatter Plots

Welcome to Workshop: Making Graphs

JASCO CANVAS PROGRAM OPERATION MANUAL

Einführung in Visual Computing

Transcription:

Graphics in R STAT 133 Gaston Sanchez Department of Statistics, UC Berkeley gastonsanchez.com github.com/gastonstat/stat133 Course web: gastonsanchez.com/stat133

Base Graphics 2

Graphics in R Traditional Graphics R "graphics" follows a static, painting on canvas model. Graphics elements are drawn, and remain visible until painted over. For dynamic and/or interactive graphics, R is limited. 3

Traditional Graphics Traditional graphics model In the traditional model, we create a plot by first calling a high-level function that creates a complete plot, and then we call low-level functions to add more output if necessary 4

Dataset mtcars head(mtcars) ## mpg cyl disp hp drat wt qsec vs am gear carb ## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 ## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 ## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 ## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 ## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 ## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 5

# simple scatter-plot plot(mtcars$mpg, mtcars$hp) Scatter plot mtcars$hp 50 150 250 10 15 20 25 30 mtcars$mpg 6

Axis Labels # xlab and ylab plot(mtcars$mpg, mtcars$hp, xlab = "miles per gallon", ylab = "horsepower") horsepower 50 150 250 10 15 20 25 30 miles per gallon 7

Title and subtitle # title and subtitle plot(mtcars$mpg, mtcars$hp, xlab = "miles per gallon", ylab = "horsepower", main = "Simple Scatterplot", sub = 'data matcars') Simple Scatterplot horsepower 50 150 250 10 15 20 25 30 miles per gallon data matcars 8

x and y coordinate ranges # 'xlim' and 'ylim' plot(mtcars$mpg, mtcars$hp, xlim = c(10, 35), ylim = c(50, 400)) mtcars$hp 50 150 250 350 10 15 20 25 30 35 mtcars$mpg 9

Type # using 'type' (e.g. lines) plot(mtcars$mpg, mtcars$hp, type = "l") mtcars$hp 50 150 250 10 15 20 25 30 mtcars$mpg 10

Points # character expansion 'cex' # and 'point character' plot(mtcars$mpg, mtcars$hp, cex = 1.5, pch = 1) mtcars$hp 50 150 250 10 15 20 25 30 mtcars$mpg 11

Point symbols (pch) available in R 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 12

Point Character # 'pch' can be any character plot(mtcars$mpg, mtcars$hp, pch = "@") @ mtcars$hp 50 150 250 @ @ @ @ @@@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ 10 15 20 25 30 mtcars$mpg 13

Point Character # 'pch' symbols will be recycled plot(mtcars$mpg, mtcars$hp, pch = 1:25) mtcars$hp 50 150 250 10 15 20 25 30 mtcars$mpg 14

Point Colors # color argument 'col' plot(mtcars$mpg, mtcars$hp, pch = 19, col = "blue", cex = 1.2) mtcars$hp 50 150 250 10 15 20 25 30 mtcars$mpg 15

Coloring Point Symbols the col argument can be used to color symbols symbols 21 through 25 can additionally have their interiors filled by using the bg (background) argument 16

Coloring Point symbols 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 17

So far... # using plot() plot(mtcars$mpg, mtcars$hp, xlim = c(10, 35), ylim = c(50, 400), xlab = "miles per gallon", ylab = "horsepower", main = "Simple Scatterplot", sub = 'data matcars', pch = 1:25, cex = 1.2, col = "blue") 18

Simple Scatterplot horsepower 50 100 150 200 250 300 350 400 10 15 20 25 30 35 miles per gallon data matcars 19

Low-Level Functions 20

High and Low level functions Usually we call a high-level function Most times we change the default arguments Then we call low-level functions 21

Scatter plot # simple scatter-plot plot(mtcars$mpg, mtcars$hp) # adding text text(mtcars$mpg, mtcars$hp, labels = rownames(mtcars)) # dummy legend legend("topright", legend = "a legend") # graphic title title("miles Per Galon -vs- Horsepower") 22

Miles Per Galon vs Horsepower Maserati Bora a legend mtcars$hp 50 100 150 200 250 300 Ford Pantera L Duster 360 Camaro Z28 Chrysler Imperial n Continental ac Fleetwood Merc Merc 450SLC Merc Hornet 450SE Pontiac 450SL Ferrari Sportabout Firebird Dino Dodge Challenger AMC Javelin Merc Merc 280C280 Valiant Mazda Hornet Mazda Volvo RX4 4 RX4 142E Drive Wag Lotus Europa Toyota Datsun Merc Corona 230 710 Porsche 914 2 Merc 240D Fiat X1 9 Fiat Toyota 128 Cor Honda Civic 10 15 20 25 30 mtcars$mpg 23

Scatter plot # simple scatter-plot plot(mtcars$mpg, mtcars$hp, type = "n", xlab = "miles per gallon", ylab = "horsepower") # grid lines abline(v = seq(from = 10, to = 30, by = 5), col = 'gray') abline(h = seq(from = 50, to = 300, by = 50), col = ' gray') # plot points points(mtcars$mpg, mtcars$hp, pch = 19, col = "blue") # plot text text(mtcars$mpg, mtcars$hp, labels = rownames(mtcars), pos = 4, col = "gray50") # graphic title title("miles Per Galon -vs- Horsepower") 24

Miles Per Galon vs Horsepower Maserati Bora horsepower 50 100 150 200 250 300 Camaro Duster Z28 360 Lincoln Continental Cadillac Fleetwood Chrysler Imperial Ford Pantera L Merc Merc 450SLC Merc 450SE Hornet 450SL Pontiac Ferrari Sportabout Firebird Dino AMC Dodge Javelin Challenger Merc Merc 280C280 Valiant Mazda Hornet Volvo 142E RX4 4 Drive Wag Toyota Datsun Merc Corona 230 710 Merc 240D Porsche 914 2 Lotus Europa Fiat X1 9 Fiat 12 Honda Civic To 10 15 20 25 30 miles per gallon 25

Test your knowledge The function plot() A) accepts any type of vector B) is a generic function C) works only for 1-D and 2-D objects D) is designed to display scatterplots and boxplots 26

Low-level functions Function points() lines() abline() segments() arrows() rect() polygon() text() symbols() legend() Description points connected line segments straight lines across a plot disconnected line segments arrows rectangles polygons text various symbols legends 27

Drawing Points with points() points(x, y, pch = int, col = str) pch integer or string indicating type of point character col color of points 28

# drawing points plot(mtcars$mpg, mtcars$hp, type = "n") points(mtcars$mpg, mtcars$hp) mtcars$hp 50 150 250 10 15 20 25 30 mtcars$mpg 29

Connected Line Segments lines(x, y, lty = str, lwd = num, col = str) lty specifies the line texture. It should be one of "blank" (0), "solid" (1), "dashed"(2), "dotted" (3), "dotdash" (4), "longdash" (5) or "twodash" (6). lwd and col specify the line width and colour 30

# connected lines plot(mtcars$mpg, mtcars$hp, type = "n") lines(mtcars$mpg, mtcars$hp, type = "s", lwd = 2) mtcars$hp 50 150 250 10 15 20 25 30 mtcars$mpg 31

Line Graph Options The type argument can be used to produced other types of lines type = "l" line graph type = "s" step function (horizontal first) type = "S" step function (vertical first) type = "h" high density (needle) plot type = "p" draw points type = "b" draw points and lines type = "o" over-plotting points and lines 32

Line Graph Options type = 'l' type = 's' type = 'S' type = 'h' 33

Connected Line Segments x <- 2005:2015 y <- c(81, 83, 84.3, 85, 85.4, 86.5, 88.3, 88.6, 90.8, 91.1, 91.3) plot(x, y, type = 'n', xlab = "Time", ylab = "Values") lines(x, y, lwd = 2) title(main = "Line Graph Example") 34

Connected Line Segments Line Graph Example Values 82 84 86 88 90 2006 2008 2010 2012 2014 Time 35

Drawing Straight Lines abline(a = intercept, b = slope) abline(h = numbers) abline(v = numbers) The a / b form specifies a line in intercept / slope form h specifies horizontal lines at given y-values v specifies vartical lines at given x-values 36

# drawing straight lines plot(mtcars$mpg, mtcars$hp, type = "n") abline(v = seq(10, 30, by = 5), h = seq(50, 300, by = 50)) points(mtcars$mpg, mtcars$hp, pch = 19, col = "red") mtcars$hp 50 150 250 10 15 20 25 30 mtcars$mpg 37

Drawing Disconnected Lines Disconnected lines can be drawn with the function: segments(x0, y0, x1, y1) The x0, y0, x1, y1 arguments give the start and end coordinates of the segments. Line texture, colour and width arguments can also be given. 38

Drawing Line Segments n <- 11 theta <- seq(0, 2 * pi, length = n + 1)[1:n] x <- sin(theta) y <- cos(theta) v1 <- rep(1:n, n) v2 <- rep(1:n, rep(n, n)) plot(x, y, type = 'n') segments(x[v1], y[v1], x[v2], y[v2]) 39

y 1.0 0.5 0.0 0.5 1.0 1.0 0.5 0.0 0.5 1.0 x 40

Drawing Polygons Polygons can be drawn with the function: polygon(x, y, col = str, border = str) x, y give the coordinates of the polygon vertexes. NA values separate polygons. col specifies the color of the interior. border specifies the color of the border. line texture and width specifications can also be given 41

Drawing Polygons Kernel Density Curve Density 0.00 0.02 0.04 0.06 10 20 30 40 N = 32 Bandwidth = 2.477 42

Adding Text We can add text using the function: text(x, y, labels,...) x, y give the coordinates of the text. labels gives the actual text strings. font optional font for the text. col optional color for the text. srt rotation of the text. adj justification of the text. 43

Drawing Text plot(0.5, 0.5, xlim = c(0, 1), ylim = c(0, 1), type = 'n') abline(h = c(.2,.5,.8), v = c(.5,.2,.8), col = "lightgrey") text(0.5, 0.5, "srt = 45, adj = c(.5,.5)", srt = 45, adj = c(.5,.5)) text(0.5, 0.8, "adj = c(0,.5)", adj = c(0,.5)) text(0.5, 0.2, "adj = c(1,.5)", adj = c(1,.5)) text(0.2, 0.5, "adj = c(1, 1)", adj = c(1, 1)) text(0.8, 0.5, "adj = c(0, 0)", adj = c(0, 0)) 44

Drawing Text 0.5 0.0 0.2 0.4 0.6 0.8 1.0 adj = c(1, 1) srt = 45, adj = c(.5,.5) adj = c(1,.5) adj = c(0,.5) adj = c(0, 0) 0.0 0.2 0.4 0.6 0.8 1.0 0.5 45

Adding a Legend Legends can be added with: legend(xloc, yloc, legend = text lty = linetypes, lwd = linewidths, pch = glyphname, col = colours, xjust = justification, yjust = justification) xloc and yloc give the coordinates where the legend is to be placed xjust and yjust give the justification of the legend box with respect to the location. 46

Adding Legends # coords of exact line plot(mtcars$mpg, mtcars$hp) legend("topright", legend = "A legend") A legend mtcars$hp 50 100 150 200 250 300 10 15 20 25 30 mtcars$mpg 47

Plots from scratch 48

Customizing Annotations It is also possible to create a plot from scratch. Although this procedure is less documented, it is extremely flexible: 1. call plot.new() to start a new plot frame 2. call plot.window() to define coordinates 3. then call low-level functions: 4. typical options involve axis() 5. then title() (title, subtitle) 6. after that call other function: e.g. points(), lines(), etc 49

Plot from Scratch plot.new() plot.window(xlim = c(0, 10), ylim = c(-2, 4), xaxs = "i") axis(1, col.axis = "grey30") axis(2, col.axis = "grey30", las = 1) title(main = "Main Title", col.main = "tomato", sub = "Plot Subtitle", col.sub = "orange", xlab = "x-axis", ylab = "y-axis", col.lab = "blue", font.lab = 3) box("figure", col = "grey90") 50

Plot from Scratch Main Title 4 3 2 y axis 1 0 1 2 0 2 4 6 8 10 x axis Plot Subtitle 51

Another plot from scratch set.seed(5) x <- rnorm(200) y <- x + rnorm(200) plot.new() plot.window(xlim = c(-4.5, 4.5), xaxs = "i", ylim = c(-4.5, 4.5), yaxs = "i") z <- lm(y ~ x) abline(h = -4:4, v = -4:4, col = "lightgrey") abline(a = coef(z)[1], b = coef(z)[2], lwd = 2, col = "red") points(x, y) axis(1) axis(2, las = 1) box() title(main = "A Fitted Regression Line") 52

4 2 0 2 4 4 2 0 2 4 A Fitted Regression Line 53

Creating a Plot from Scratch Start a new plot with plot.new() plot.new() opens a new (empty) plot frame plot.new() chooses a default plotting region 54

Setting Up Coordinates Then use plot.window() to set up the coordinate system for the plotting frame # axis limits (0,1)x(0,1) plot.window(xlim = c(0, 1), ylim = c(0, 1)) By default plot.window() produces axis limits which are expanded by 6% over those actually specified. 55

Setting Up Coordinates The default limits expansion can be turned-off by specifying xaxs = "i" and/or yaxs = "i" plot.window(xlim, ylim, xaxs = "i") 56

Aspect Ratio Control Another important argument is asp, which allows us to specify the aspect ratio plot.window(xlim, ylim, xaxs = "i", asp = 1) asp = 1 means that unit steps in the x and y directions produce equal distances in the x and y directions on the plot. (Important to avoid distortion of circles that look like ellipses) 57

Drawing Axes The axis() function can be used to draw axes at any of the four sides of a plot. side=1 below the graph side=2 to the left of the graph side=3 above the graph side=4 to the right of the graph 58

Customizing Axes Axes can be customized via several arguments (see?axis) location of tick-marks labels of axis colors sizes text fonts text orientation 59

Plot Annotation The function title() allows us to include labels in the margins main main title above the graph sub subtitle below the graph xlab label for the x-axis ylab label for the y-axis 60

Customizing Annotations The annotations can be customized with additional arguments for the fonts, colors, and size (expansion) font.main, col.main, cex.main font.sub, col.sub, cex.sub font.lab, col.lab, cex.lab 61

Drawing Arrows Arrows can be drawn with the function: arrows(x0, y0, x1, y1, code = int, length = num, angle = num) The x0, y0, x1, y1 arguments give the start and end coordinates. code=1 head at the start, code=2 head at the end, code=3 head at both ends length of the arrow head and angle to the shaft 62

Drawing Arrows plot.new() plot.window(xlim = c(0, 1), ylim = c(0, 1)) arrows(.05,.075,.45,.9, code = 1) arrows(.55,.9,.95,.075, code = 2) arrows(.1, 0,.9, 0, code = 3) text(.5, 1, "A", cex = 1.5) text(0, 0, "B", cex = 1.5) text(1, 0, "C", cex = 1.5) 63

Drawing Arrows A B C 64

Drawing Rectangles Rectangles can be drawn with the function: rect(x0, y0, x1, y1, col = str, border = str) x0, y0, x1, y1 give the coordinates of diagonally opposite corners of the rectangles. col specifies the color of the interior. border specifies the color of the border. 65

Drawing Rectangles # barplot manually constructed plot.new() plot.window(xlim = c(0, 5), ylim = c(0, 10)) rect(0:4, 0, 1:5, c(7, 8, 4, 3), col = "turquoise", border = "white") axis(1) axis(2, las = 1) 66

Drawing Rectangles 10 8 6 4 2 0 0 1 2 3 4 5 67

Plot Regions 68

Anatomy of Plot Frame and Region margin 3 margin 2 Plot Region margin 4 margin 1 69

Adjusting the Margins Margins can be adjusted with the par() function in various ways: In inches: par(mai = c(2, 2, 1, 1)) In lines of text: par(mar = c(4, 4, 2, 2)) Width and Height in inches: par(pin = c(5, 4)) 70

One more scatter plot # simple scatter-plot op <- par(mar = c(5, 4, 3, 1)) plot(mtcars$mpg, mtcars$hp, type = "n", xlab = "miles per gallon", ylab = "horsepower") # grid lines abline(v = seq(from = 10, to = 30, by = 5), col = 'gray') abline(h = seq(from = 50, to = 300, by = 50), col = ' gray') # points points(mtcars$mpg, mtcars$hp, pch = 19, col = "blue") # text (point labels) text(mtcars$mpg, mtcars$hp, labels = rownames(mtcars), pos = 4, col = "gray50") # title title("miles Per Galon -vs- Horsepower") # reset graphical margins par(op) 71

Miles Per Galon vs Horsepower Maserati Bora horsepower 50 100 150 200 250 300 Lincoln Continental Ford Pantera L Camaro Duster Z28 360 Chrysler Imperial Cadillac Fleetwood Merc Merc 450SLC Merc 450SE Hornet 450SL Pontiac Ferrari Sportabout Firebird Dino AMC Dodge Javelin Challenger Merc Merc 280C280 Mazda Hornet Volvo 142E RX4 4 Drive Wag Porsche 914 2 Valiant Toyota Datsun Merc Corona 230 710 Merc 240D Fiat X1 9 Lotus Europa Fiat 12 Honda Civic To 10 15 20 25 30 miles per gallon 72