• Powerful environment for visualizing scientific data
  • Integrated graphics and statistics infrastructure
  • Publication quality graphics
  • Fully programmable
  • Highly reproducible
  • Full LaTeX and Markdown support via knitr and R markdown
  • Vast number of R packages with graphics utilities

Documentation for R Graphics


  • Graphics Task Page - URL
  • R Graph Gallery - URL
  • R Graphical Manual - URL
  • Paul Murrell’s book R (Grid) Graphics - URL

Interactive graphics

  • rggobi` (GGobi) - URL
  • iplots - URL
  • Open GL (rgl) - URL

Graphics Environments

Viewing and saving graphics in R

  • On-screen graphics
  • postscript, pdf, svg
  • jpeg, png, wmf, tiff, …

Four major graphic environments

(a) Low-level infrastructure

  • R Base Graphics (low- and high-level)
  • grid: Manual

(b) High-level infrastructure \begin{itemize}

Base Graphics: Overview

Important high-level plotting functions

  • plot: generic x-y plotting
  • barplot: bar plots
  • boxplot: box-and-whisker plot
  • hist: histograms
  • pie: pie charts
  • dotchart: cleveland dot plots
  • image, heatmap, contour, persp: functions to generate image-like plots
  • qqnorm, qqline, qqplot: distribution comparison plots
  • pairs, coplot: display of multivariant data

Help on graphics functions

  • ?myfct
  • ?plot
  • ?par

Preferred Object Types

  • Matrices and data frames
  • Vectors
  • Named vectors

Scatter Plots

Basic Scatter Plot

Sample data set for subsequent plots

y <- matrix(runif(30), ncol=3, dimnames=list(letters[1:10], LETTERS[1:3]))

Plot data

plot(y[,1], y[,2]) 

All pairs


With labels

plot(y[,1], y[,2], pch=20, col="red", main="Symbols and Labels")
text(y[,1]+0.03, y[,2], rownames(y))

More examples

Print instead of symbols the row names

plot(y[,1], y[,2], type="n", main="Plot of Labels")
text(y[,1], y[,2], rownames(y)) 

Usage of important plotting parameters

grid(5, 5, lwd = 2) 
op <- par(mar=c(8,8,8,8), bg="lightblue")
plot(y[,1], y[,2], type="p", col="red", cex.lab=1.2, cex.axis=1.2, 
     cex.main=1.2, cex.sub=1, lwd=4, pch=20, xlab="x label", 
     ylab="y label", main="My Main", sub="My Sub")

_Important arguments

  • mar: specifies the margin sizes around the plotting area in order: c(bottom, left, top, right)
  • col: color of symbols
  • pch: type of symbols, samples: example(points)
  • lwd: size of symbols
  • cex.*: control font sizes
  • For details see ?par

Add regression line

plot(y[,1], y[,2])
myline <- lm(y[,2]~y[,1]); abline(myline, lwd=2) 

## Call:
## lm(formula = y[, 2] ~ y[, 1])
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.40357 -0.17912 -0.04299  0.22147  0.46623 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)  
## (Intercept)   0.5764     0.2110   2.732   0.0258 *
## y[, 1]       -0.3647     0.3959  -0.921   0.3839  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## Residual standard error: 0.3095 on 8 degrees of freedom
## Multiple R-squared:  0.09589,	Adjusted R-squared:  -0.01712 
## F-statistic: 0.8485 on 1 and 8 DF,  p-value: 0.3839

Log scale

Same plot as above, but on log scale

plot(y[,1], y[,2], log="xy") 

Add a mathematical expression

plot(y[,1], y[,2]); text(y[1,1], y[1,2], expression(sum(frac(1,sqrt(x^2*pi)))), cex=1.3) 

Homework 3B

Homework 3B: Scatter Plots

Line Plots

Single data set

plot(y[,1], type="l", lwd=2, col="blue") 

Many Data Sets

Plots line graph for all columns in data frame y. The split.screen function is used in this example in a for loop to overlay several line graphs in the same plot.

## [1] 1
plot(y[,1], ylim=c(0,1), xlab="Measurement", ylab="Intensity", type="l", lwd=2, col=1)
for(i in 2:length(y[1,])) { 
	screen(1, new=FALSE)
	plot(y[,i], ylim=c(0,1), type="l", lwd=2, col=i, xaxt="n", yaxt="n", ylab="", xlab="", main="", bty="n") 


Bar Plots


barplot(y[1:4,], ylim=c(0, max(y[1:4,])+0.3), beside=TRUE, legend=letters[1:4]) 
text(labels=round(as.vector(as.matrix(y[1:4,])),2), x=seq(1.5, 13, by=1) + sort(rep(c(0,1,2), 4)), y=as.vector(as.matrix(y[1:4,]))+0.04) 

Error Bars

bar <- barplot(m <- rowMeans(y) * 10, ylim=c(0, 10))
stdev <- sd(t(y))
arrows(bar, m, bar, m + stdev, length=0.15, angle = 90)


hist(y, freq=TRUE, breaks=10)

Density Plots

plot(density(y), col="red")

Pie Charts

pie(y[,1], col=rainbow(length(y[,1]), start=0.1, end=0.8), clockwise=TRUE)
legend("topright", legend=row.names(y), cex=1.3, bty="n", pch=15, pt.cex=1.8, 
col=rainbow(length(y[,1]), start=0.1, end=0.8), ncol=1) 

Color Selection Utilities

Default color palette and how to change it

## [1] "black"   "red"     "green3"  "blue"    "cyan"    "magenta" "yellow"  "gray"
palette(rainbow(5, start=0.1, end=0.2))
## [1] "#FF9900" "#FFBF00" "#FFE600" "#F2FF00" "#CCFF00"

The gray function allows to select any type of gray shades by providing values from 0 to 1

gray(seq(0.1, 1, by= 0.2))
## [1] "#1A1A1A" "#4D4D4D" "#808080" "#B3B3B3" "#E6E6E6"

Color gradients with colorpanel function from gplots library`

colorpanel(5, "darkblue", "yellow", "white")
## [1] "#00008B" "#808046" "#FFFF00" "#FFFF80" "#FFFFFF"

Much more on colors in R see Earl Glynn’s color chart here

Saving Graphics to File

After the pdf() command all graphs are redirected to file test.pdf. Works for all common formats similarly: jpeg, png, ps, tiff, …

plot(1:10, 1:10) 

Generates Scalable Vector Graphics (SVG) files that can be edited in vector graphics programs, such as InkScape.

plot(1:10, 1:10) 

Homework 3C

Homework 3C: Bar Plots

Previous page.Previous Page                     Next Page Next page.