390 likes | 509 Views
Module 4 R Charts. Do. Learn. See & Hear. Read. PowerPoint must be in View Show Mode to See videos and hyperlinks. Module 4 R Graphics Menu. Making a Graphic Script Working with plot() Function Adding Text to a Chart Adding Lines to Chart Extra R Scripts. Menu.
E N D
Module 4R Charts Do Learn See & Hear Read PowerPoint must be in View Show Mode to See videos and hyperlinks R Charts
Module 4 R Graphics Menu • Making a Graphic Script • Working with plot() Function • Adding Text to a Chart • Adding Lines to Chart • Extra R Scripts R Charts
Menu Making a Graphic Script Click video image to start video R Charts
Menu Making a Graphic Script • R’s Graphic Packages • R’s 3 Distinct Chart Areas • Script Components • High level functions • Graphic parameters • Low level Functions R Charts
Menu R’s Graphics Packages • R has several graphics subsystems: • Graphics – traditional graphics • Grid package (low level functions) • Lattice package • ggplot2 package • This module shows the traditional - base graphics system R Charts
R’s 3 Chart Areas: Plot Area – within axes Figure Margin Area – for axis labels and tick mark labels Outer Margin Area R gives User precise control over content, format of all 3 Areas High Level Graphic Functions Graphic Parameters Low Level Graphic Functions Menu R’s 3 Distinct Chart Areas R Charts
# R Script to produce scatter chart x_data <- ...y_data <-…par( ) # Graphic parametersplot( ) # High level plot functiontext( ) # Low level function Menu Making a Graphic Scriptwith R’s Graphic Package High Level Graphic Function Call Use GP defaults or adj GP w/ argument Low Level Graphic Function Call Use GP defaults or adj GP w/ argument Graphic Parameters 70 GPs defaults set adjust w/ par() par(oma=c(2,2,2,2)); par(mar=c(3,3,1,1))plot(x_data, y_data, main = “My Chart Title“, type = "b",xlim = c(0,11), ylim = c(0,11), xlab ="X", ylab = "Y“, pch=16, col = "red", bty = "n", xaxs="i", yaxs = "i", las=1) text(2,7, “my note”,col = “blue” ) R Charts
Menu High Level Graphic Functions Produce complete chart This module focuses on plot() function low level functions, graphic parameters. Module 5 covers box, dot, histogram and strip charts R Charts
Menu Low Level Plot FunctionsAdd graphic content to current plot R Charts
R has 70 Graphic Parameters (GP) Each GP has: name: col = value: “red” Default Values Set At start of R session To Get par() values par() lists all 70 with current value par(“GP_name”) gives current value for specific GP User can change GP value: Global: par(“col” = “red”) Local: plot(x,y,col=“red”) Menu Graphic ParametersGP > par(“col”) [1] “black” R Charts
Menu Essential Graphical Parameters* These parameters must be set with call to par(). R Charts
Menu pch = Plot Characters Graphic Parameter • R has 25 plotting characters • pch = specifies plot character • Characters 19 – 20 can be filled with selected color • 19 – Solid circle • 20 – Bullet circle • Characters 21: 25 can have selected fill and border colors • bg = Controls Border color • col= Controls fill R Charts
Menu lty= Line Type Graphic Parameter • R has 6 line types • lty = specifies the line type • lty= can be specified as integer or character string: • 0 – “blank” • 1 – “solid” • 2 – “dashed” • 3 – “dotted” • 4 – “dotdash” • 5 – “longdash” • 6 – “twodash” R Charts
Menu Assignment 4-1Getting Familiar with par() • Print out par documentation ?par • Get Current Values for all par() • Get current par(“bty”) value R Charts
Menu Working with plot() Function Click video image to start video R Charts
Menu plot() Function Arguments plot(x,y, type=“?”, main’”??”, sub = “??“, xlab=“??”, ylab =“??”, ann =?, axes = ?, xlim = c(x1,x2), ylim = c(y1,y2)) or plot(y ~ x, data = “??”, type=“?”, main’”??”, sub = “??“, xlab=“??”, ylab =“??”, ann =?, axes = ?, xlim = c(x1,x2), ylim = c(y1,y2)) R Charts
# R script to demonstrate default plot() ## Ex_Scr_4_1_default_plot.R ################### ##Script to produce default XY plot() ## STEP 1: SETUP - Source File rm(list=ls()); par(oma=c(2,1,0,1)) script = "C:/Learn_R/Mod_4_R_Charts/Ex_Scr_4_1_default_plot.R" ## STEP 2: READ DATA y_data <- c(0,1,2,3,4,5,6,7,8,9,10,9,8,7,6,5,4,3,2,1,0) x_data <- seq(0:20) ## STEP 3: MANIPULATE DATA ## STEP 4: PRODUCE CHART - REPORT plot(x_data,y_data, main = "plot() Defaults ") ## Outer Margin annotation my_date <- format(Sys.time(), "%m/%d/%y") mtext(script, side = 1, line = .75, cex=0.7, outer = T, adj = 0) mtext(my_date, side = 1, line =.75, cex = 0.7, outer = T, adj = 1) Menu plot() Function Defaults • Potential plot() Default Improvements • Line – symbol style • X & Y axis do not meet @ 0 • Remove box around plot • Adjust Y axis label orientation • Improve X & Y axis labels R Charts
plot(x_data,y_data, main = "plot() Default Improvements", type = "b",col = "red", bty = "n", xaxs="i", yaxs = "i", las=1, xlim = c(0,25), ylim = c(0,12), xlab = "X", ylab = "Y" ) plot(x_data,y_data, main = "plot() Defaults" ) Menu Improving plot() Function Defaultswith Additional plot() arguments & graphical parameters R Charts
Users can specify colors by name; R has 657 colors “red” “blue” “darkgreen” To get list of R colors: >colors() col = most common way to specify color for lines, points, text Alternatives: rgb() and hsv() Color Conversions: col2rgb() convertColor() Menu Working With R Colors R Charts
Menu plot() type argument type=?, • "p" for points • "b" for both • "o" for both ‘overplotted’ • "l" for lines • "c" for the lines part alone of "b" • "h" for high-density vertical lines • "s" for h/v stair steps • "S" for v/h stair steps • "n" for no plotting R Charts
Menu Example Scatter plot ## Ex_Scr_4_3_xy_plot.R ################### ##Script to produce scatter plot ## STEP 1: SETUP - Source File rm(list=ls()); par(oma=c(2,1,0,1)) script <- "C:/Learn_R/Mod_4_R_Charts/Ex_Scr_4_3_xy_plot.R" ## STEP 2: READ DATA x_data <- seq(0,10*pi,0.1*pi) y_data <- sin(x_data) plot(x_data,y_data,type = "l") ## Outer margin annotation my_date <- format(Sys.time(), "%m/%d/%y") mtext(script, side = 1, line = .75, cex=0.7, outer = T, adj = 0) mtext(date(), side = 1, line =.75, cex = 0.7, outer = T, adj = 1) R Charts
Start R Session In R Console, Open Script: “C:/Learn_R/Mod_4_R_Script/Ex_Scr_4_3_xy_plot.R” Save as: “C:/Learn_R/Mod_4_R_Script/Practice_4_1_xy_plot.R” Make these changes par() settings: par(ps = 10) par(las = 1) plot() formatting: type = “b” pch = 16 col = “blue” xlab = “X”; ylab= “sin(X)” main = “xy Plot of sin() Formula” xlim = c(0, 15) ylim = c(-2, 2) Menu Assignment 4-2xy plot () Expected Result R Charts
Menu Assignment 4-2xy plot () ## Practice_4_1_xy_plot.R ################### ##Script to produce scatter plot ## STEP 1: SETUP - Source File rm(list=ls()); par(oma=c(1.75,1,0,1)); par(las=1); par(ps=10) script <- "C:/Learn_R/Mod_4_R_Charts/Practice_4_1_xy_plot.R" ## STEP 2: READ DATA x_data <- seq(0,10*pi,0.1*pi) y_data <- sin(x_data) plot(x_data,y_data,type = "b",pch = 16, col = "blue", xlab ="X", ylab = "sin(X)", main = "xy Plot of sin() Function", xlim = c(0,15), ylim = c(-2,2)) ## Outer margin annotation my_date <- format(Sys.time(), "%m/%d/%y") mtext(script, side = 1, line = .5, cex=0.7, outer = T, adj = 0) mtext(date(), side = 1, line =.5, cex = 0.7, outer = T, adj = 1) Assignment 4-2 Script R Charts
Menu Assignment 4-3Make Step Chart and Scatter Plot Interactively Edit Your Practice_4_1_xy_plot.R Script to make these charts type = ‘s” type = ‘p” R Charts
Menu Working With Text Click video image to start video Text is Critical for chart interpretation R Charts
Text Additions: main= argument to add chart title in figure margin at top sub= argument to add subtitle below X axis text() – low level function to add text in plot area mtext() – low level function to add text in margin and outer areas Size: par(ps=10) Magnification: cex = 0.85 Color: col=“red” (657 color choices) font= 1-4 (regular, bold, italic, bold italic) family= (“sans”, “serif”, “mono”) Alignment: adj = 0,.5,1(left,center, right) Rotation: srt= Menu Working With Text Text is Critical for chart interpretation R Charts
text( x, y, “note”, pos =0 , cex = 1, col = “red”, srt = 45) x,y – plot area coordinates where text should be placed “note” – text to be added to plot pos – position of text with respect to x, y coordinates. Default is centered on point. cex - font magnification factor col - color srt – text rotation - degrees User can construct multi-line text strings by using \n to designate new line Note <- “This is an example \n of a multi-line note ” Menu Adding text string in Plot Areatext () Function \n for Multi-line Text \”to add quote marks to text string • Text strings designated by “ “ marks • User can embed quote marks within text string by using \” to have R not treat mark as begin/end of text string • Note <- “This is an example of using \”quote marks\” within text string” R Charts
Menu Simple Plot – No Annotation #################### Example R Script: ############### ## Ex_Scr_4_4_simple_plot.R ######################## ##Script to read data file, simple plot ## STEP 1: SETUP - Source File rm(list=ls()); oldpar<- par(no.readonly=T); ;par(las=1) link <- "C:\\Learn_R\\Mod_4_R_Charts\\Data_4_1_GISS_1980_By_year.txt.txt" ## STEP 2: READ DATA my_data <- read.table(link, skip =0, sep = ",", dec=".", row.names = NULL , header = F, colClasses = c("numeric","numeric"), comment.char = "#", na.strings = c( "","*", "-",-99.9, -999.9 ), col.names = c( "yr", "anom") ) attach(my_data) ## STEP 3: MANIPULATE DATA ## STEP 4: PRODUCE PLOT - REPORT plot(yr, anom, type = "l", col = "red") ## Outer margin annotation my_date <- format(Sys.time(), "%m/%d/%y") mtext(script, side = 1, line = .5, cex=0.7, outer = T, adj = 0) mtext(my_date, side = 1, line =.5, cex = 0.7, outer = T, adj = 1) ## STEP 5: CLOSE par(oldpar) detach(my_data) R Charts
Menu Simple Plot –with Annotation #################### Example R Script: ############### ## Ex_Scr_4_5_simple_plot_w_annotation.R ######################## ##Script to read data file, simple plot ## STEP 1: SETUP - Source File rm(list=ls()) script<- "C:\\Learn_R\\Mod_4_R_Charts\\Ex_Scr_4_5_simple_plot_w_annotation.R" oldpar<- par(no.readonly=T) par(oma=c(2,2,1,2)); par(las=1); par(mar=c(5,4,2,1)) link <- "C:\\Learn_R\\Mod_4_R_Charts\\Data_4_1_GISS_1980_By_year.txt.txt" ## STEP 2: READ DATA my_data <- read.table(link, skip =0, sep = ",", dec=".", row.names = NULL , header = F, colClasses = c("numeric","numeric"), comment.char = "#", na.strings = c( "","*", "-",-99.9, -999.9 ), col.names = c( "yr", "anom") ) attach(my_data) ## STEP 3: MANIPULATE DATA m_title <- "GISS Temperature Anomaly - C (1980-2008)" sub_title <- "Source: http://data.giss.nasa.gov/gistemp/" note <- "Baseline 1951-1980" ## STEP 4: PRODUCE PLOT - REPORT plot(yr, anom, type = "l", col = "red", main = m_title, sub = sub_title, ylab = " Temperature Anomaly - C", xlab = "", cex.axis = 0.75, cex.lab=0.8, cex.main = .8, cex.sub = 0.6) text(1985,0.65, note, cex=0.6 ) my_date <- format(Sys.time(),"%m/%d/%y") mtext(script, side=1, line = .5, outer = T, adj = 0, cex = 0.65) mtext(my_date, side = 1, line = 0.5, outer = T, adj = 1, cex = 0.7) ## STEP 5: CLOSE par(oldpar); detach(my_data) R Charts
font= font type for plot text =1 Standard =2 Bold =3 Italic =4 Bold and italic Use for other figure text font.axis; font.lab font.main; font.sub family = controls font family = “sans” = “serif” = “mono” Menu text()font & family R Charts
paste(arg1, arg2, arg3, sep= “ ”) arg1 – text string or variable to be concatenated with other arguments sep = “ ” - separator to add between arguments. Space good for text. Variable data and text strings can be concatenated into a single string that can then be added to plot with text() Example: # build text string with paste() my_date <- paste(“today is “, date()) # add text string to plot text(x, y, my_date, col = “red”) Menu paste() Functionconcatenates arguments into a single string R Charts
mtext( “note”, side = , line = , outer = F, adj = 0, cex = 1, col = “red”) “note” – text to be added to margin area side – side of plot to place text(1= bottom, 2= left, 3= top, 4=right) line – line of margin to place text, starting at 0, counting outwards outer – use outer area (T or F) adj – text alignment, 0 = left, 0.5= center, 1 = right cex - font adjustment factor col - color Axis Numbering Convention 3 Axis Sides 2 4 1 Menu Adding Text within Margin Area R Charts
Menu How I’ve Been Adding Margin Text to Each Mod 4 Plot • 3 Steps to Create Margin Annotation: • Set Outer Margin Areas • par(oma=c(2,2,0,1)) • Establish script name vector • script<- "C:\\Learn_R\\Mod_4_R_Charts\\Ex__plot_.R" • Develop Margin Text w/date & script name • ## Outer margin annotation • my_date <- format(Sys.time(), "%m/%d/%y") • mtext(script, side = 1, line = .5, cex=0.7, outer = T, adj = 0) • mtext(my_date, side = 1, line =.5, cex = 0.7, outer = T, adj = 1) R Charts
Start R Session In R Console, Open Script: “C:/Learn_R/Mod_4_R_Script/Ex_Scr_4_3_simple_plot.R” Save as: “C:/Learn_R/Mod_4_R_Script/Practice_4_2_my_simple.R” You’ve seen me do it Make the Full Annotation on your own Menu Assignment 4-4Annotate Simple Chart Yourself R Charts
Menu Adding Lines in Plot Area Click video image to start video R Charts
Menu Adding Lines in Plot Area #################### Example R Script: ############### ## Ex_Scr_4_6_add_lines_to_plot.R ######################## ##Script to read data file, simple plot no annotation ## STEP 1: SETUP - Source File rm(list=ls()) script<- "C:/Learn_R/Mod_4_R_Charts/Ex_Scr_4_6_add_lines_to_plot.R" oldpar<- par(no.readonly=T) ; par(las=1) par(ps=10); par(oma=c(2,2,1,2)) ## STEP 2: READ DATA x <- 0:100; y <- x^2 x_pts <- c(15, 35, 35, 15, 15); y_pts <- c(8300, 8300, 6500, 6500,8300) # STEP 3: MANIPULATE DATA # STEP 4: PRODUCE CHART - REPORT plot(x,y, type = "n“ , main="Add Lines, Points, Arrows Examples") points(x, y,col = "black", lty=1, type = "l") grid(col="lightgrey", lty=1) abline(h=2500, col="red") abline(v=50, col = "blue") arrows(65,8400, 85,8400, code=3, col="orange", length = 0.1) lines(x_pts, y_pts, lty=1, col = "green") points(x_pts,y_pts, type = "p",col ="red",pch=19) my_date <- format(Sys.time(),"%m/%d/%y") mtext(script, side=1, line = .5, outer = T, adj = 0, cex = 0.65) mtext(my_date, side = 1, line = 0.5, outer = T, adj = 1, cex = 0.7) ## STEP 5: CLOSE par(oldpar) detach(my_data) R Charts
Start R Session In R Console, Open Script: “C:/Learn_R/Mod_4_R_Script/Ex_Scr_4_6_add_lines_to_plot.R” Save as: “C:/Learn_R/Mod_4_R_Script/Practice_4_3_add_lines_to_plot.R” You’ve seen me work with it Changes each element to see what happens, get comfortable with forms of lines Menu Assignment 4-5Working with grid(), points(), abline(), arrows() & lines() Printout & Read R Documentation for lines ? grid() ? points() ? lines() ? abline() ? arrows() R Charts
Menu Extra Scripts Click video image to start video R Charts
Plot Box & Axis Options Box type bty=“n” bty=“o” Axes axes = T or F Axis Offset: xaxs= “i” or “r” yaxs = “i” or “r” Axis 3 & 4 tick marks Axis(n, ..tick=T) Menu Plot Box and Axis Styles R Charts