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

Similar documents
grid Graphics Paul Murrell December 7, 2017

grid Graphics Paul Murrell October 6, 2005

Talk Overview. grid Graphics and Programming. The Structure of R Graphics. Introduction to grid

Working with grid Viewports

Working with grid Viewports

Modifying grid grobs

Writing grid Code. Paul Murrell. December 14, 2009

A GUI-Builder Approach to grid Graphics

R Lattice Graphics. Paul Murrell

Graphical Programming: R Graphics from the Ground Up

DATA VISUALIZATION WITH GGPLOT2. Grid Graphics

Graphics - Part III: Basic Graphics Continued

Display Lists in grid

Plotting Complex Figures Using R. Simon Andrews v

Display Lists in grid

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

Graphics #1. R Graphics Fundamentals & Scatter Plots

AA BB CC DD EE. Introduction to Graphics in R

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

Package arphit. March 28, 2019

Data Visualization. Andrew Jaffe Instructor

The LDheatmap Package

Package YaleToolkit. February 15, 2013

Statistical Programming with R

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

Az R adatelemzési nyelv

CIND123 Module 6.2 Screen Capture

Package YaleToolkit. R topics documented: August 29, 2016

Package gridextra. September 9, 2017

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

Package gridextra. July 2, 2014

INTRODUCTION TO R. Basic Graphics

Using Built-in Plotting Functions

Plotting: An Iterative Process

The gridsvg package. Paul Murrell. October 30, 2017

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

Package grimport2. March 20, 2018

Package gridgraphics

Package pathdiagram. R topics documented: August 29, 2016

Package JBTools. R topics documented: June 2, 2015

Chapter 5 An Introduction to Basic Plotting Tools

Package VennDiagram. February 15, 2013

Package cowplot. March 6, 2016

Package grimport. R topics documented: February 20, 2015

Animation with the gridsvg package

The nor1mix Package. August 3, 2006

Package areaplot. October 18, 2017

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

Class #2 Lab: Basic CAD Skills & Standards. Basic AutoCAD Interface AutoCAD Skills AutoCAD Standards

IST 3108 Data Analysis and Graphics Using R Week 9

The nor1mix Package. June 12, 2007

Roger D. Peng, Associate Professor of Biostatistics Johns Hopkins Bloomberg School of Public Health

Package sciplot. February 15, 2013

Introduction to R 21/11/2016

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

Section 33: Advanced Charts

Introduction to R. Biostatistics 615/815 Lecture 23

Package VennDiagram. April 16, 2013

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

Creating a Basic Chart in Excel 2007

Package nonmem2r. April 5, 2018

An Introduction to R Graphics with examples

Univariate Data - 2. Numeric Summaries

DSCI 325: Handout 18 Introduction to Graphics in R

Hexagon Binning: an Overview

CREATING POWERFUL AND EFFECTIVE GRAPHICAL DISPLAYS: AN INTRODUCTION TO LATTICE GRAPHICS IN R

AN INTRODUCTION TO LATTICE GRAPHICS IN R

3ds Max Cottage Step 1. Always start out by setting up units: We re going with this setup as we will round everything off to one inch.

Graphing Single Subject Research Data. AAC Colloquium October 18 th, 2017

Technology Assignment: Scatter Plots

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

JASCO CANVAS PROGRAM OPERATION MANUAL

Matrix algebra. Basics

6th Grade Math. Parent Handbook

Package RGraphics. March 11, 2014

R Workshop Module 3: Plotting Data Katherine Thompson Department of Statistics, University of Kentucky

Guided Problem Solving

Graphics and Java 2D Introduction OBJECTIVES. One picture is worth ten thousand words.

CS3240 Human-Computer Interaction Lab Sheet Lab Session 2

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

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

IN DESIGN. A review of the overview

BIMM-143: INTRODUCTION TO BIOINFORMATICS (Lecture 5)

Package Grid2Polygons

An Introduction to R Graphics

Package wordcloud. August 24, 2018

HOUR 12. Adding a Chart

COMPUTER TECHNOLOGY SPREADSHEETS BASIC TERMINOLOGY. A workbook is the file Excel creates to store your data.

Univariate Data - 2. Numeric Summaries

SketchUp. SketchUp. Google SketchUp. Using SketchUp. The Tool Set

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

Component. Modified by Jason Howie on Feb 13, Parent page: PCB Dialogs. Other Related Resources Component (Object) The Component Dialog.

Module 10. Data Visualization. Andrew Jaffe Instructor

SciGraphica. Tutorial Manual - Tutorials 1and 2 Version 0.8.0

BiplotGUI. Features Manual. Anthony la Grange Department of Genetics Stellenbosch University South Africa. Version February 2010.

InDesign Tools Overview

Exploratory Data Analysis - Part 2 September 8, 2005

A Step-by-step guide to creating a Professional PowerPoint Presentation

Microsoft Office PowerPoint 2013 Courses 24 Hours

Circular Visualization in R. Zuguang Gu last revised on

Transcription:

R Graphics p.1/47 R Graphics Paul Murrell paul@stat.auckland.ac.nz The University of Auckland

R Graphics p.2/47 Overview Standard (base) R graphics grid graphics Graphics Regions and Coordinate Systems Directing Graphics Output Producing Graphics Output Plots from First Principles grid and lattice

R Graphics p.3/47 R Graphics Fundamentals Graphics Regions and Coordinate Systems Outer Margins Figure Regions Figure Margins Plot Regions Directing Graphics Output Which graphics functions to use Producing Graphics Output Graphical parameters

R Graphics p.4/47 Outer Margins and Figure Region Outer margin 3 Outer margin 2 Figure Region Outer margin 4 Outer margin 1 par(oma=c(0, 0, 0, 0), omi=) par(mfrow=c(1, 1), mfcol=c(1, 1), fig=, fin=)

R Graphics p.5/47 Arbitrary Figure Regions Figure 2 Figure 1 par(fig=c(0.1, 0.6, 0.1, 0.6)) par(new=t) par(fig=c(0.4, 0.9, 0.4, 0.8))

R Graphics p.6/47 Figure Margins and Plot Region Outer margin 3 Figure Margin 3 Outer margin 2 Figure Margin 2 Plot Region Figure Margin 4 Outer margin 4 Figure Margin 1 Outer margin 1 par(mar=c(5.1, 4.1, 4.1, 2.1), mai=) par(pty="m", pin=, plt=)

R Graphics p.7/47 User Coordinates Minimum y value Maximum y value y i The location (x i, y i ) Minimum x value x i Maximum x value <plot.function>(..., xlim=, ylim=) par(xaxs="r", yaxs="r")

R Graphics p.8/47 Figure Margin Coordinates 11 Figure Margin 2 0 lines 3 lines 0 11 Figure Margin 1 3 lines 0 0 lines

11 0 Outer Margin Coordinates 11 Current Plot Current Plot 0 0 11 0 0 11 1 Outer Margin 1 Outer Margin 1 R Graphics p.9/47 0 lines 3 lines 0 lines 3 lines

R Graphics p.10/47 Directing Graphics Output Plot Region Figure Margins Outer Margins text() mtext() mtext() points() axis() lines() arrows() polygon() segments() box() abline()

R Graphics p.11/47 Graphical Parameters Permanent settings par(<param>=) Temporary settings <plot.function>(..., <param>=) col colour of lines, text,... lwd line width lty line type font font face (plain, bold, italic) pch type of plotting symbol srt string rotation

R Graphics p.12/47 Plots from First Principles 1:10 0 2 4 6 8 10 0 2 4 6 8 10

R Graphics p.13/47 Plots from First Principles Create regions and coordinate systems > par(omi=rep(0, 4), mar=c(5.1, 4.1, 4.1, 2.1), mfrow=c(1, 1)) > plot(0, type="n", xlim=c(0, 10), ylim=c(0,10), + axes=f, xlab="", ylab="") Draw data symbols in plot region > par(col=1, lty=1, lwd=1, cex=1, srt=0) > points(1:10) Draw axes and labels in the figure margins > box() > axis(1) > axis(2) > mtext("1:10", side=2, line=3)

R Graphics p.14/47 Plots from First Principles 0 2 4 6 8 10 12 14 Group 4 Group 3 Group 2 Group 1

R Graphics p.15/47 Plots from First Principles Create area for barplot, leaving room for legend. par(fig=c(0, 0.8, 0, 1), mar=c(4, 4, 4, 2)) Draw barplot. barplot(matrix(sample(1:4, 16, replace=t), ncol=4), angle=45, density=1:4*10, col=1) Stay on same page and set up region and coordinates for legend. par(new=t) par(fig=c(0.8, 1, 0, 1), mar=c(4, 0, 4, 2)) plot(0, xlim=c(0, 1), ylim=c(0, 5), axes=f, xlab="", ylab="", type="n")

R Graphics p.16/47 Plots from First Principles Figure out what 0.5 is in user coordinates. size <- par("cxy")/par("cin")*.5 Draw legend elements and a dashed border.. box(lty=2) for (i in 1:4) polygon(c(0.5 - size[1]/2, 0.5 - size[1]/2, 0.5 + size[1]/2, 0.5 + size[1]/2), c(i, i + size[2], i + size[2], i), angle=45, density=i*10) text(0.5, i-0.2, paste("group", i))

R Graphics p.17/47 grid Graphics Fundamentals Graphics Regions and Coordinate Systems Viewports Layouts Directing Graphics Output Units Producing Graphics Output Graphical primitives and components Graphical parameters

Viewports 0.25npc 0.5npc 1 0 0.5npc 0 1 0.5npc viewport(x = 0.5, y = 0.5, width = 0.5, height = 0.25, angle=45) R Graphics p.18/47

R Graphics p.19/47 Pushing and Popping Viewports vp1 <- viewport(x=0, y=0.5, w=0.5, h=0.5, just=c("left", "bottom")) vp2 <- viewport(x=0.5, y=0, w=0.5, h=0.5, just=c("left", "bottom")) push.viewport(vp1) grid.text("some drawing in graphics region 1", y=0.8) pop.viewport() push.viewport(vp2) grid.text("some drawing in graphics region 2", y=0.8) pop.viewport() push.viewport(vp1) grid.text("more drawing in graphics region 1", y=0.2) pop.viewport()

R Graphics p.20/47 Pushing and Popping Viewports Some drawing in graphics region 1 MORE drawing in graphics region 1 Some drawing in graphics region 2

R Graphics p.21/47 The Viewport Stack vp <- viewport(width = 0.5, height = 0.5) push.viewport(vp) grid.rect(gp=gpar(col="grey")) grid.text("quarter of the page", y=0.85) push.viewport(vp) grid.rect() grid.text("quarter of the\nprevious viewport") pop.viewport(2)

R Graphics p.22/47 The Viewport Stack quarter of the page quarter of the previous viewport

R Graphics p.23/47 Directing Graphics Output push.viewport( viewport(y=unit(3, "lines"), width=0.9, height=0.8, just="bottom", xscale=c(0, 100))) grid.rect(gp=gpar(col="grey")) grid.xaxis() push.viewport( viewport(x=unit(60, "native"), y=unit(0.5, "npc"), width=unit(1, "strwidth", "coordinates for everyone"), height=unit(3, "inches"))) grid.rect() grid.text("coordinates for everyone") pop.viewport(2)

R Graphics p.24/47 Directing Graphics Output coordinates for everyone 0 20 40 60 80 100

R Graphics p.25/47 Units "npc" Normalised Parent Coordinates. Treats the bottom-left corner of the current viewport as the location and the top-right corner as. "native" Locations and sizes are relative to the x- and y-scales for the current viewport. "inches" Locations and sizes are in terms of physical inches. For locations, is at the bottom-left of the viewport. "cm" Same as "inches", except in centimetres.

R Graphics p.26/47 Units "char" "lines" "snpc" Locations and sizes are specified in terms of multiples of the current nominal fontheight. Locations and sizes are specified in terms of multiples of the height of a line of text (dependent on both the current fontsize and the current lineheight). Square Normalised Parent Coordinates. Locations and size are expressed as a proportion of the smaller of the width and height of the current viewport.

R Graphics p.27/47 Units "strwidth" "strheight" "grobwidth" "grobheight" Locations and sizes are expressed as multiples of the width of a given string (dependent on the string and the current fontsize). Like "strwidth". Locations and sizes are expressed as multiples of the width of a given graphical object (dependent on the current state of the graphical object). Like "grobwidth".

R Graphics p.28/47 Working with Units > unit(1, "npc") [1] 1npc > unit(1:3/4, "npc") [1] 0.25npc 0.5npc 0.75npc > unit(1:3/4, "npc")[2] [1] 0.5npc

R Graphics p.29/47 Working with Units > unit(1:3/4, "npc") + unit(1, "inches") [1] 0.25npc+1inches 0.5npc+1inches 0.75npc+1inches > min(unit(0.5, "npc"), unit(1, "inches")) x[1] min(0.5npc, 1inches) > unit.c(unit(0.5, "npc"), + unit(2, "inches") + unit(1:3/4, "npc"), + unit(1, "strwidth", "hi there")) [1] 0.5npc 2inches+0.25npc [3] 2inches+0.5npc 2inches+0.75npc [5] 1strwidth

R Graphics p.30/47 Layouts push.viewport(viewport(layout=grid.layout(4, 5))) grid.rect(gp=gpar(col="grey")) grid.segments(c(1:4/5, rep(0, 3)), c(rep(0, 4), 1:3/4), c(1:4/5, rep(1, 3)), c(rep(1, 4), 1:3/4), gp=gpar(col="grey")) push.viewport(viewport(layout.pos.col=2:3, layout.pos.row=3)) grid.rect(gp=gpar(lwd=3)) pop.viewport(2)

Layouts R Graphics p.31/47

R Graphics p.32/47 Layouts grid.layout(4, 4, widths=unit(c(3, 1, 1, 1), c("lines", "null", "null", "cm")), heights=unit(c(1, 1, 2, 3), c("cm", "null", "null", "lines")))

R Graphics p.33/47 Layouts 3lines 1null 1null 1cm 1cm (1, 1) (1, 2) (1, 3) (1, 4) 1cm 1null (2, 1) (2, 2) (2, 3) (2, 4) 1null 2null (3, 1) (3, 2) (3, 3) (3, 4) 2null 3lines (4, 1) (4, 2) (4, 3) (4, 4) 3lines 3lines 1null 1null 1cm

R Graphics p.34/47 Producing Graphics Output grid.text grid.rect grid.circle grid.polygon grid.points grid.lines grid.segments grid.grill grid.move.to grid.line.to grid.xaxis grid.yaxis Can specify angle of rotation. Can specify type of plotting symbol. Convenience function for drawing grid lines Top or bottom axis Left or right axis

R Graphics p.35/47 Graphical Parameters Specify using gp argument of viewport or graphical object. Viewport settings are inherited by subsequent viewports and graphical objects. col colour of lines, text,... fill colour for filling polygons,... lwd line width lty line type fontface font face (plain, bold, italic) fontfamily font family (Helvetica, Hershey,...) fontsize font size (points)

R Graphics p.36/47 Graphical Parameters push.viewport( viewport(gp=gpar(fill="grey", fontface="italic"))) grid.rect() grid.rect(width=0.8, height=0.6, gp=gpar(fill="white")) grid.text("this text and the inner rectangle\n have specified their own gpar settings", y=0.75, gp=gpar(fontface="plain")) grid.text("this text and the outer rectangle\n accept the gpar settings of the viewport", y=0.25) pop.viewport()

R Graphics p.37/47 Graphical Parameters This text and the inner rectangle have specified their own gpar settings This text and the outer rectangle accept the gpar settings of the viewport

R Graphics p.38/47 Plots from First Principles x <- y <- 1:10 push.viewport(plotviewport(c(5.1, 4.1, 4.1, 2.1))) push.viewport(dataviewport(x, y)) grid.rect() grid.xaxis() grid.yaxis() grid.points(x, y) grid.text("1:10", x=unit(-3, "lines"), rot=90) pop.viewport(2)

R Graphics p.39/47 Plots from First Principles 10 8 1:10 6 4 2 2 4 6 8 10

Barplot with Legend bp <- function(bardata) nbars <- dim(bardata)[2] nmeasures <- dim(bardata)[1] bartotals <- rbind(rep(0, nbars), apply(bardata, 2, cumsum)) baryscale <- c(0, max(bartotals)*1.05) push.viewport(plotviewport(c(5, 4, 4, 1), yscale=baryscale, layout=grid.layout(1, nbars))) grid.rect() grid.yaxis() for (i in 1:nbars) push.viewport(viewport(layout.pos.col=i, yscale=baryscale)) grid.rect(x=rep(0.5, nmeasures), y=unit(bartotals[1:nmeasures, i], "native"), height=unit(diff(bartotals[,i]), "native"), width=0.8, just="bottom", gp=gpar(fill=boxcolours)) pop.viewport() pop.viewport() R Graphics p.40/47

R Graphics p.41/47 Barplot with Legend leg <- function(leglabels) nlabels <- length(leglabels) push.viewport(viewport(layout=grid.layout(4, 1))) for (i in 1:nlabels) push.viewport(viewport(layout.pos.row=i)) grid.rect(width=boxsize, height=boxsize, just="bottom", gp=gpar(fill=boxcolours[i])) grid.text(leglabels[i], y=unit(0.5, "npc") - unit(1, "lines")) pop.viewport() pop.viewport()

R Graphics p.42/47 Barplot with Legend bardata <- matrix(sample(1:4, 16, replace=t), ncol=4) boxcolours <- 1:4 leglabels <- c("group A", "Group B", "Group C", "Something Longer") boxsize <- unit(0.5, "inches") legend.width <- max(unit(rep(1, length(leglabels)), "strwidth", as.list(leglabels)) + unit(2, "lines"), unit(0.5, "inches") + unit(2, "lines")) push.viewport(viewport(layout=grid.layout(1, 2, widths=unit.c(unit(1,"null"), legend.width)))) push.viewport(viewport(layout.pos.col=1)) bp(bardata) pop.viewport() push.viewport(viewport(layout.pos.col=2)) push.viewport(plotviewport(c(5, 0, 4, 0))) leg(leglabels) pop.viewport(3)

R Graphics p.43/47 Barplot with Legend 10 Group A 8 6 Group B 4 Group C 2 Something Longer 0

R Graphics p.44/47 Adding grid to lattice x <- rnorm(100) y <- rnorm(100) g <- sample(1:8, 100, replace=t) print.trellis( xyplot(y x g, panel=function(x, y) panel.xyplot(x, y); grid.lines(unit(c(0, 1), "npc"), unit(0, "native"), gp=gpar(col="grey")) ))

R Graphics p.45/47 Adding grid to lattice g 2 1 0 1 2 g 2 1 0 1 2 g g g 2 1 y 0 1 2 g g g 2 1 0 1 2 2 1 0 1 2 x 2 1 0 1 2

R Graphics p.46/47 Adding lattice to grid sometext <- "A panel of text\nproduced using\n raw grid code\nthat describes\n the plot\nto the right." latticeplot <- xyplot(y x g, layout=c(2, 4)) grid.rect(gp=gpar(lty="dashed")) push.viewport(viewport(layout=grid.layout(1, 2, widths=unit.c(unit(1, "strwidth", sometext) + unit(2, "cm"), unit(1, "null"))))) push.viewport(viewport(layout.pos.col=1)) grid.rect(gp=gpar(fill="light grey")) grid.text(sometext, x=unit(1, "cm"), y=unit(1, "npc") - unit(1, "inches"), just=c("left", "top")) pop.viewport() push.viewport(viewport(layout.pos.col=2)) print.trellis(latticeplot, newpage=false) pop.viewport(2)

R Graphics p.47/47 Adding lattice to grid 2 0 2 A panel of text produced using raw grid code that describes the plot to the right. 3 2 1 0 1 2 g g g g 3 2 1 0 1 2 y g g 3 2 1 0 1 2 3 2 1 0 1 2 g g 2 0 2 x