R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

88
R Graphics Lori Shepherd- Kirchgraber May 22, 2012

Transcript of R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Page 1: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

R Graphics

Lori Shepherd-Kirchgraber

May 22, 2012

Page 2: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

demo(“graphics”)

Page 3: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Navigating Devices

• windows( ) Opens a new device [X11() on linux]

• dev.cur( ) Returns current/active device• dev.set( ) Sets a device to current/active

device• dev.off( ) Closes a device• graphics.off( ) Closes all open devices

Some plot calls will open a new device if one is not already open: Plot Hist Boxplot Pie Layout Par change default plot settings

Page 4: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

par( )

Argument

• bg• fg

• new• mfrow, mfcol• mai

Controls

• Background Color of plot • Foreground Color of plot

• Add plot to existing, overlay plots • Define multiple plots layout • Adjust plot margins

Page 5: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

plot(1:10,1:10) # default white, black

par(bg="pink") # bg changes background color, but only for active deviceplot(1:10,1:10)

windows() # opens new window in windows/mac, X11() for linux plot(1:10,1:10)

windows()par(bg="gray88", fg="red") # fg changes foreground color plot(1:10,1:10)

dev.cur() # give current device

dev.set(2) # set current device plot(10:1, 1:10) # NOTE: this overwrites original

dev.off() # default closes active, can give device number to close inactive

graphics.off() # closes all devices

Page 6: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

plot(1:10,1:10) par(bg="pink")

par(bg="gray88", fg="red")

Page 7: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Device Number 3 Is Active

Device Number 2 Is Inactive

Page 8: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

What would we want to change?

Page 9: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Title and Axes Labels

Argument• main• sub• xlab • ylab

controls• overall title for the plot• sub title for the plot• title for x axis• title for y axis

plot(x=1:10, y=1:10, main="My Title", sub="and sub title", xlab="x values“, ylab=“y values”)

For now we will use default setting and discuss options (colors, fonts, etc.) throughout the presentation

Page 10: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Changing Colors

Argument

• col • col.main• col.sub• col.lab• col.axis

Controls

• Plotting color• Color for main title• Color for sub title • Color for x and y labels • Color for axis annotation

• par(bg= , fg= )

plot(x=1:10, y=1:10, main="My Title", sub="and sub title", xlab="x values", ylab="y values", col="blue", col.main="Purple", col.sub="red", col.lab="orange", col.axis="green")

Page 11: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Colors Choices

• colors( )

Generators: [colors given are in rgb format #RRGGBB]• rainbow( )• heat.colors( )• terrain.colors( )• topo.colors( )• cm.colors( )• gray( ), grey( )• hsv

Page 12: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

col argument

• Single Value all points the same

• Length of x/y each point unique color

• Shorter length vector recycled, repeat colors

Page 13: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

plot(x=1:10, y=1:10, main="My Title", sub="and sub title", xlab="x values“, ylab=“y values”, col=“blue”)

col=rainbow(10) col=c(rep(“blue”,5), rep(“red”, 5))

col=c(“blue”, “red”, “green”)

Page 14: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Changing Size

Argument• cex • cex.main• cex.sub• cex.lab• cex.axis

Controls• Plotting size• Size for main title• Size for sub title • Size for x and y labels • Size for axis annotation

plot(x=1:10, y=1:10, main="My Title", sub="and sub title", xlab="x values", ylab="y values", col="blue", cex=3, cex.main=5, col.sub=0.5, col.lab=1.5, col.axis=2)

Note: If you make your size too big, points will overlap or titles and labels will get cut off

Page 15: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

cex argument

• Single Value all points the same

• Length of x/y each point unique size

• Shorter length vector recycled, repeat size

Page 16: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

plot(x=1:10, y=1:10, main="My Title", sub="and sub title", xlab="x value", ylab="y value", cex=1:3)

Page 17: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

lwd argument• Controls the width of the lines drawn

plot(x=1:10, y=1:10, main="My Title", sub="and sub title", xlab="x value", ylab="y value", col=“blue”)

plot(x=1:10, y=1:10, main="My Title", sub="and sub title", xlab="x value", ylab="y value", col=“blue”, lwd=5)

Page 18: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Changing Plotting Symbolspch argument

pch controls the plotting symbol used

we have been using pch=1 for open circles

Options• pch=NA, pch=“ “ # no symbol

• 1:18 # S compatible vectors

• 19:25 # R vector symbols, color filled symbols,

includes symbol borders

• 26:31 # unused, ignored

• 32:127 # ASCII

• 128:255 # native characters

Page 19: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

plot(1:18, rep(1,18), pch=1:18, cex=2, ylab="")

Page 20: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

plot(x=19:25, y=rep(1,7), pch=19:25, cex=2, ylab=“”, col=“black”)

plot(x=19:25, y=rep(1,7), pch=19:25, cex=2, ylab=“”, bg=“black”, col=“red”, lwd=2)

Page 21: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

ASCII Symbols

plot(32:127, rep(1,96), pch=32:127, ylab="")

Page 22: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

plot(128:255, 128:255, pch=128:255, ylab="")

Page 23: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

pch argument

• Single Value all points the same

• Length of x/y each point unique symbol

• Shorter length vector recycled, repeat symbol

plot(1:10, 1:10, cex=1:3, pch=1:3)

Page 24: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Changing Plotting Type type argument

Argument Value• “p” (default)• “l”• “b”• “c”• “o”• “h”• “s”• “S”• “n”

Plotting Type• Points• Lines• Both points and lines• Lines parted at point location• Both “overplotted”• Histogram like – vertical lines• Steps – horizontal then vertical• Steps – vertical then horizontal• No plotting

Page 25: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

plot(1:10, 1:10, type=“p”) plot(1:10, 1:10, type=“l”) plot(1:10, 1:10, type=“b”)plot(1:10, 1:10, type=“c”) plot(1:10, 1:10, type=“o”) plot(1:10, 1:10, type=“h”)plot(1:10, 1:10, type=“s”) plot(1:10, 1:10, type=“S”) plot(1:10, 1:10, type=“n”)

Page 26: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Changing Line Type and Width

• lwd # controls width of line

• lty # controls type of line drawn 0 blank 1 solid (default) 2 dashed 3 dotted 4 dotdash 5 longdash 6 twodash

Page 27: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

plot(1:10, 1:10, type=“l”, plot(1:10, 1:10, type=“l”, plot(1:10, 1:10, type=“l”, lty=1) lty=2) lty=3)

plot(1:10, 1:10, type=“l”, plot(1:10, 1:10, type=“l”, plot(1:10, 1:10, type=“l”, lty=4) lty=5) lty=6)

Page 28: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Adding to Existing Plot

• points• lines• abline• legend• text• shapes/symbols

• par(new=T)

Page 29: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Watch your plot range

• Xlim• Ylim • Zlim - if applicable

These help set the limit or range of axis values# or specify the x range and y range with xlim and ylim

# xlim=c(xlowerlimit, xupperlimit)# ylim=c(ylowerlimit, yupperlimit)

plot(1:10,1:10, xlim=c(0,13), ylim=c(-2,10))

Page 30: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Orange

# plot everything so that the range is covered plot(circumference~age, data=Orange, type="n")

# plot points for tree 1points(circumference~age, data=Orange, subset=which(Tree==1), pch=21, bg="blue")

# plot line for tree 1lines(stats::lowess(Orange[which(Orange$Tree==1),c(2,3)]), col="blue")

# plot points for tree 4points(circumference~age, data=Orange, subset=which(Tree==4), pch=8,col="hotpink")

# plot line for tree 4 lines(stats::lowess(Orange[which(Orange$Tree==4),c(2,3)]), col="hotpink", lty=2)

Page 31: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Adding Straight Lineabline

abline is a function to plot straight lines• V plot a vertical line at x value

• H plot a horizontal line at y value

• A, B plot a line with slope of a and intercept of b

abline(h=100, lwd=2, col="lightgray")

Page 32: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Adding A Legend

Location of legend specified with• x, y coordinate • "bottomright", "bottom", "bottomleft", "left", "topleft", "top",

"topright", "right" and "center" • locator(n=1)

Page 33: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Legend Arguments

Argument

• legend• fill• lty,lwd• pch• bty

• Bg, box.lty, box.lwd, box.col

• text.col, text.font, text.width• horiz

controls

• Text/Labels • Symbol box fill color• Line type and width• Symbol• If box around legend should be

drawn, either ‘o’ or ‘n’• Background color of legend box,

Border of box line type, width, and color

• Text color, font, and width• T or F, T sets legend horizontal

rather than vertical

Page 34: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

legend("topleft", legend=c("Tree1", "Tree4"), fill=c("blue", "hotpink"))

legend(0,150, legend=c("Tree1", "Tree4"), fill=c("blue", "hotpink"), lty=c(1,2), box.col="gray92",col=c("blue", "hotpink"))

legend(locator(1), legend=c("Tree1", "Tree4"), pch=c(21,8), col=c("blue", "hotpink"),bty='n', text.col=c("blue", "hotpink"), horiz=T)

Page 35: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Adding Text

Location of legend specified with• x, y coordinate • locator( )

pos argument controls where text is placed

1=below given location

2=left of given location

3=above given location

4=right of given location

Other arguments to customize: cex, col, font

text(locator(2), labels=c("3rd","6th"), pos=c(3,4))

Page 36: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Adding Shapes and Symbols

• rect( )• polygon( )• symbols( )

Reminder: You can get help on any R function by using ?

?rect

Page 37: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Adding Plots

• sometimes you want to combine plots that by default open a new device or overwrite existing

An Example: a histogram and a density plot

x=rnorm(1000)

hist(x, freq=F)

plot(density(x))

In this case, the density plot will overwrite the histogram

Page 38: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

par( )

Argument

• bg• fg

• new

• mfrow, mfcol• mai

Controls

• Background Color of plot • Foreground Color of plot

• Add plot to existing, overlay plots

• Define multiple plots layout • Adjust plot margins

Note: Each plot will by default still plot its own axes and labels

Page 39: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

x=rnorm(1000)

hist(x, freq=F, axes=F, main=“”, xlab=“”, ylab=“”)

par(new=T)

plot(density(x) , axes=F, main=“”, xlab=“”, ylab=“”, col=“red”, lwd=2)

Page 40: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Adding Axes axis( )

(used axes=F in plotting call or to add more)

• side # 1 = bottom, 2=left, 3=top, 4=right

• at # where the ticks are drawn

• labels # text for ticks

• tick # T or F, if tic and axes should be drawn

• line # number of lines into the margin to draw, pushes outward

• lwd, col, lty # width, color and line type of axis line

• lwd.ticks, col.ticks # width and color of tick marks

• las # position of labels 1=always horizontal,

2=perpendicular to axis, 3=always vertical

Page 41: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

plot(1:10,1:10, axes=F, xlab="", ylab="")box(col="red", lty=3)axis(1)axis(2, at=seq(2,10,by=2), labels=c("a","b","c","d","e"), col.axis="blue", col.ticks="green", col="orange")axis(2, line=2)axis(3, las=2, lwd=2, lwd.ticks=4, col.ticks="blue", lty=2)axis(4, las=1, tick=F)

Page 42: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Adding Title and Labelstitle( )

(used main=“ “, xlab=“ “, ylab=“ “ in plot call)

argument

• main• sub• xlab• ylab

adds

• Overall title for plot• Sub title for plot• X label for plot • Y label for plot

Other arguments for customization: col, col.main, cex, cex.lab, line, family, font.main, font, etc.

Page 43: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Fonts

• Family– Name of font family. Currently supported families:

Sans, serif, mono,

Hershey families (HersheySerif, HersheyGothicEnglish, etc.)

• font, font.axis, font.lab, font.main, font.sub– Numeric

1 = plain text, 2=bold, 3=italic, 4=bold italic

[some families may not support all of these]

Page 44: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

plot(1:10,1:10, axes=F, xlab="", ylab="")

box()

title(main="my title", family="mono",font.main=4, col.main="gray50", cex=4)title(xlab="My X value", family="HersheyGothicGerman")title(ylab="My Y value", font.lab=3, line=.5, col.lab="green")

Page 45: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Other Plots

Page 46: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Histogram

argument

• x• Breaks

• Freq• density• angle• labels• col, border• main, xlab, ylab

controls

• Values• How to determine breaks – a vector of break points, a

single value for number of cells (plus tails), or an algorithm for breaks (Sturges, Scott, Freedman-Diaconis)

• T or F, if False it plots density • Density of shading lines, if NA or not specified: none• Slope of shading lines given in degrees• Labels to be placed above each bar • Color to fill bars, border color around bars • Main title of plot, x and y labels

Page 47: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

hist(x) hist(x, breaks=4)

X=LakeHuron

Page 48: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

hist(x, border="red“, col=c("purple", "violetred1", "green3", "cornsilk", "cyan", "black“,”red”))

hist(x, density=20, angle=c(60,120,180,240,300,0), border="red", col=c("purple", "violetred1", "green3","cornsilk", "cyan", "black“, ”red”), labels=paste("vec ",rep(1:7),sep=""))

legend("topright", density=30, angle=c(60,120,180,240,300,0), border="red", fill=c("purple", "violetred1", "green3","cornsilk", "cyan", "black“,”red”), legend=paste("vec ",rep(1:7),sep=""))

Page 49: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Barplot

argument

• height• besides• horiz• density• angle• col, border• space

controls

• Either vector or matrix • T or F, if F stacked bars, T juxtaposed bars• T or F, if False bars are drawn vertically• Density of shading lines, if NA or not specified: none• Slope of shading lines given in degrees• Color to fill bars, border color around bars • The amount of space between groups/bars

VADeaths

Page 50: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

barplot(VADeaths) barplot(VADeaths, beside=T)

Page 51: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

barplot(VADeaths, beside=T, col=c(“lightblue”,"mistyrose","lightcyan","lavender", "cornsilk"), legend = rownames(VADeaths), ylim = c(0, 100), cex.names=.5)

Page 52: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

For confidence intervalsCheck out the plotrix package’s

plotCI function

library(plotrix)?plotCI

Page 53: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Pie Chart

argument

• x• labels• radius• density• angle• col, border

controls

• Numeric vector for slices• Vector names for slices• Numeric: radius of plot • Density of shading lines, if NA or not specified: none• Slope of shading lines given in degrees• Color to fill bars, border color around bars

Page 54: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

pie.sales <- c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12)names(pie.sales) <- c("Blueberry","Cherry","Apple","Boston Cream",

"Other", "Vanilla Cream")clr=c(“red”,”purple”,”blue”,”cyan”,”green”,”yellow”)

pie(pie.sales) pie(pie.sales, col = clr, radius=0.5)

pie(pie.sales, col=clr, border=NA, labels="")

pie(pie.sales, col=clr, density=10, angle= 15 + 10 * 1:6, lty=2, lwd=2, border="gray69", main="Pie Sales")

Page 55: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Image

Page 56: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Image

Argument

• Z• X, Y

• xlim,ylim,zlim• col

Control

• Matrix of values to plot• Location of grid lines, if omitted created

based on Z• Set range of axes values• Color scale to use for plot

– Default is heat.colors(12)

Page 57: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Mat = matrix(1:12,ncol=3)

1 5 92 6 103 7 114 8 12

image(Mat)

image(Mat, col=terrain.colors(12))

Page 58: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Volcano

x <- 10*(1:nrow(volcano))y <- 10*(1:ncol(volcano))image(x, y, volcano, col = terrain.colors(100), axes = FALSE)contour(x, y, volcano, levels = seq(90, 200, by = 5), add = TRUE, col = "peru")

Page 59: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Another way to define colorhsv

• Hue, saturation and value• Creates a vector of colors

– Transitions for color of hue to black

image(x, y, volcano, col=hsv(0.5,v=seq(1,0,length=10)), axes=FALSE)

image(x, y, volcano, col=hsv(0.5,v=seq(0,1,length=10)), axes=FALSE)

Page 60: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

image(x, y, volcano, col=c(hsv(0.5,v=seq(1,0,length=10)), hsv(h=0,v=seq(0,1,length=10))) axes=FALSE)

Page 61: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Color gradient in hsv

• Numeric value for h (hue)

Page 62: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Uploading A Picture

• Utilizes the R packages– plotrix– png

• Upload a .png file using readPNG• Use the rasterImage to convert into bitmap

formatting and place onto plot

Page 63: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

library(plotrix)library(png)

# load image readPNGimg <- readPNG("worldMapWikipedia.png")

# create blank plot plot(1:10,1:10, type="n", axes=F, xlab="", ylab="")

# add image to given location xleft, ybottom, xright, ytop rasterImage(img, 1,1,10,10)

text(locator(2), pos=4, col="black", font=2, lwd=3, cex=0.5, labels=c("USA“,”China”))

Page 64: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Multiple Plots

Page 65: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

par( )

Argument

• bg• fg• new• mfrow, mfcol• mai

Controls

• Background Color of plot • Foreground Color of plot• Add plot to existing, overlay plots • Define multiple plots layout • Adjust plot margins

Page 66: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

mfrow, mfcol

• c(Number of rows, Number of Columns)• mfrow fills by row• mfcol fills by col

Page 67: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

par(mfrow=c(2,2)) par(mfcol=c(2,2))

plot(0,0, main="plot1")plot(1:10,1:10, col="blue", main="plot2")plot(1:10,10:1, col="red", main="plot3")plot(1:3,1:3, main="plot4")

Page 68: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

par(mfrow=c(2,3))plot(1:10, 1:10, type=“l”, lty=1)plot(1:10, 1:10, type=“l”, lty=2)plot(1:10, 1:10, type=“l”, lty=3)plot(1:10, 1:10, type=“l”, lty=4)plot(1:10, 1:10, type=“l”, lty=5)plot(1:10, 1:10, type=“l”, lty=6)

Page 69: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Layoutmat is a numeric matrix with numbers 1:number of desired plots.0 indicates area with no plot

4 4 4 4 4 4 4 4 0 0 0 0 04 4 4 4 4 4 4 4 0 0 0 0 01 1 1 1 1 1 1 1 3 3 3 3 31 1 1 1 1 1 1 1 3 3 3 3 31 1 1 1 1 1 1 1 3 3 3 3 31 1 1 1 1 1 1 1 3 3 3 3 31 1 1 1 1 1 1 1 3 3 3 3 31 1 1 1 1 1 1 1 3 3 3 3 32 2 2 2 2 2 2 2 3 3 3 3 32 2 2 2 2 2 2 2 3 3 3 3 32 2 2 2 2 2 2 2 3 3 3 3 32 2 2 2 2 2 2 2 3 3 3 3 3

mat = matrix(c(rep(c(rep(4,8),rep(0,5)),2), rep(c(rep(1,8),rep(3,5)),6), rep(c(rep(2,8),rep(3,5)),4)),byrow=T, ncol=13)

Page 70: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Layout: common error

Error in plot.new() : figure margins too large

Page 71: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

par( )

Argument

• bg• fg• new• mfrow, mfcol• mai

Controls

• Background Color of plot • Foreground Color of plot• Add plot to existing, overlay plots • Define multiple plots layout • Adjust plot margins

par(mai=c(bottom, left, top, right))Bottom, left, top, and right are numeric values corresponding to margins around the plot

Page 72: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

mat = matrix(c(rep(c(rep(4,8),rep(0,5)),2), rep(c(rep(1,8),rep(3,5)),6), rep(c(rep(2,8),rep(3,5)),4)), byrow=T, ncol=13)

layout(mat)

par(mai=c(.5,.5,.5,.5))boxplot(count ~ spray, data = InsectSprays, col = 'lightgray')

par(mai=c(.5,.5,.5,.5))plot(1:3,1:3, col='blue', xlab='', ylab=''); points(1:2, 2:3, col='red')

par(mai=c(.5,.5,0,.1))image(1:2,1:3, z=matrix(c(-1,-10,1,10,-5,0),ncol=3,nrow=2), xlab='', ylab='')

par(mai=c(.1,.3,.1,.1))plot(cos, xlim = c(-pi,3*pi), n = 1001, col = 'blue', xlab='', ylab='')

Page 73: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Saving

• savehistory• > File > save as• savePlot• png, jpeg, bmp, tiff, postscript, pdf

Page 74: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

savehistory

savehistory(“myRcode”)

savehistory(nameOfFile)

This saves a text file with all the code from that R session. This code can be loaded into a new R session or you can use the text file to copy and paste needed code.

loadhistory(“myRcode”)

Code will not appear in R console but code is in session memory. You are able to access the code by scrolling.

Page 75: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

> File > Save as This will save whatever plot window was last clicked on NOT active device

Page 76: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

savePlot

argument• filename• type

• device

controls

• Name of file• File type for saving. Currently supported types:

"wmf", "emf", "png", "jpg", "jpeg", "bmp", "tif", "tiff", "ps", "eps", "pdf“

• Number indicating which device should be saved. If unspecified the default saves the current device (Active device)

savePlot(“saveThisPlot”, type=“jpeg”)

Page 77: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

plot(1:10,1:10)windows()par(bg="pink")plot(1:10,1:10)

# this saves plot with pink backgroundsavePlot(“saveThisPlot”, type=“jpeg”)

# this saves plot with white backgroundsavePlot(“saveOrigPlot”, type=“pdf”, device=2)

Page 78: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Saving using R functions

• png• jpeg• bmp• tiff• postscript• pdf

These need to be called BEFORE making the plot

Page 79: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

png(“myPNGfile.png”)

< code to generate plot >

dev.off()

png("test.png") par(bg=“pink”) plot(1:10,1:10) lines(1:10,1:10)dev.off()

Page 80: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

png, bmp, jpeg, tiff

• Will only save one plot per file

• To save multiple plots, %d in the filename – This will generate plots with the same base

filename but add a numeric indicator

jpeg("test%d.jpeg") plot(1:10,1:10) par(bg="pink") plot(1:10,1:10)dev.off()

Page 81: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

postscript and pdf

• Can have multiple plots in one file

• Each plot will have a new page

Page 82: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

3D plots

See R packages: • rgl • scatterplot3d

Page 83: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

rgl

library(“rgl”)demo(“rgl”)

plot3d(rnorm(20), rnorm(20), rnorm(20), xlab=“x”, ylab=“y”, zlab=“z”)points3d(rnorm(10), rnorm(10), rnorm(10), col=“Red”) lines3d(rnorm(5), rnorm(5), rnorm(5), col=“blue”)

Page 84: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Exporting Interactive Plots

Sendplot

Page 85: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

What is sendplot?

sendplot generates an interactive layout of plots.

each plot may be interactive or static

What is meant by interactivity is that information specific to a point or image region is displayed when the mouse scrolls over the area

A png file and an html file are sent to end user; it can be sent to and run on any machine with a web browser that has javascript capabilities

Page 86: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

End ResultResult is two files:

1. png file2. html file

The researcher/collaborator need only to openthe html file in order to have an interactive graphto view data.

It can be customized on the programmers end to show any data the researcher requests or would find useful

Page 87: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

library("sendplot")Mtcars

y.pos=mtcars$mpgx.pos=mtcars$hpplot(x.pos,y.pos,xlab='gross horsepower', ylab='miles per gallon', axes=F, pch=mtcars$cyl,col=mtcars$am+1,cex=0.875,main='Motor Trend Car Road Tests')axis(1)axis(2)legend(200,30,pch=rep(c(4,6,8),2), col=c(rep(1,3),rep(2,3)), legend=paste(rep(c(4,6,8),2),'cylinders,', c('automatic','manual')[c(rep(1,3), rep(2,3))]), cex=0.875)

plot.call=c(“plot(x.pos,y.pos,xlab='gross horsepower', ylab='miles per gallon', axes=F,pch=mtcars$cyl, col=mtcars$am+1,cex=0.875, main='Motor Trend Car Road Tests'); axis(1); axis(2); legend(200,30,pch=rep(c(4,6,8),2), col=c(rep(1,3),rep(2,3)), legend=paste(rep(c(4,6,8),2),'cylinders,', c('automatic','manual')[c(rep(1,3),rep(2,3))]), cex=0.875)")

xy.labels = data.frame(name=rownames(mtcars),mtcars=mtcars)

xy.send(plot.call=plot.call, y.pos=y.pos, x.pos=x.pos, xy.labels = xy.labels, image.size="800x600", fname.root="exPlotXY", font.size=18)

Code to Make Plot

Sendplot Code

Page 88: R Graphics Lori Shepherd-Kirchgraber May 22, 2012.

Questions?

Lori Shepherd-Kirchgraber

[email protected]