# Miscellaneous plots in R

The R Graphics Cookbook is an awesome book; it’s so awesome that I bought the ebook after I bought the hardcopy because one copy of it wasn’t enough. I haven’t read the book in its entirety yet, but I thought I’ll share with you some of the recipes in Chapter 13, which illustrates how to create miscellaneous plots in R.

# Visualising a correlation matrix

I’ve written a post on creating a correlation matrix using R and showed how that can be visualised as a graph. From the cookbook I learned about the corrplot package, which creates a rather nice visualisation of correlations.

```install.packages("corrplot")
library(corrplot)

# I will use the same example in my correlation post
# create random matrix with numbers ranging from 1 to 100
set.seed(12345)
A <- matrix(runif(100,1,100),nrow=10,ncol=10,byrow=T)
correlation_matrix <- cor(t(A), method="spearman")
corrplot(correlation_matrix)
``` Displaying the coefficients:

```col <- colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD", "#4477AA"))
corrplot(correlation_matrix,
tl.col="black", # colour of text label
tl.srt=45, # text label rotation
col=col(200), # colour of glyphs
order="AOE" # ordering method
)
``` # Plotting a function

I’ve written a post on plotting curves in R, which was describing how one could plot polynomial functions. Here I’ll illustrate how we can plot these functions using ggplot2 as described in the cookbook.

```# install if necessary
install.packages("ggplot2")
library(ggplot2)

# I will use the same example in my curve fitting post
x <- c(32,64,96,118,126,144,152.5,158)
y <- c(99.5,104.8,108.5,100,86,64,35.3,15)

# fit a third order polynomial
fit3 <- lm(y~poly(x,3,raw=TRUE))

# display coefficients
coef(fit3)
(Intercept) poly(x, 3, raw = TRUE)1 poly(x, 3, raw = TRUE)2
1.269381e+02           -1.626321e+00            2.910221e-02
poly(x, 3, raw = TRUE)3
-1.467589e-04

# create function for this third order polynomial
# recall that y = d + cx + bx^2 + ax^3
my_fun <- function(x){
coef(fit3) +
(coef(fit3) * x) +
(coef(fit3) * x^2) +
(coef(fit3) * x^3)
}

ggplot(data.frame(x=c(30, 160)),
aes(x=x)) +
stat_function(fun=my_fun)
``` How do we colour a specific region of the curve?

```# remember to run the code above
# create another function that returns
# NA within a range
my_fun_limit <- function(x){
y <- coef(fit3) +
(coef(fit3) * x) +
(coef(fit3) * x^2) +
(coef(fit3) * x^3)
y[x<80 | x>120]<-NA
return(y)
}

p <- ggplot(data.frame(x=c(30, 160)), aes(x=x))
p + stat_function(fun=my_fun_limit, geom="area", fill="blue", alpha=0.2) +
stat_function(fun=my_fun)
``` # Creating a heatmap using ggplot2

I’ve written a post on creating heatmaps with R but I’ve never used ggplot2 for creating a heatmap.

```# using the matrix in my heatmap post
set.seed(31)
y <- matrix(rnorm(50),
10,
5,
dimnames=list(paste("g", 1:10, sep=""),
paste("t", 1:5, sep=""))
)

# data needs to be in long format
# install reshape if necessary
install.packages("reshape")
library(reshape)
yy <- melt(y)

ggplot(yy, aes(x=X1, y=X2, fill=value)) +
geom_raster() +
``` # Plotting an empirical cumulative distribution

Plotting a cumulative distribution is particularly useful for visualising quantiles and ggplot2 makes it extremely easy to produce this plot.

```# I will use an example expression dataset
# from the DESeq package
#install DESeq if necessary
source("http://bioconductor.org/biocLite.R")
biocLite("DESeq")
library("DESeq")

example_file <- system.file ("extra/TagSeqExample.tab", package="DESeq")

# summary of expression values in the T1a sample
summary(data\$T1a)
Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
0.0     2.0    23.0   146.9    90.0 32310.0

ggplot(data, aes(x=log2(T1a))) +
geom_hline(yintercept=0.5) +
stat_ecdf()
``` Note that half of the data is around 2^4.5 (22.62742); from the summary we saw that the median was 23. From this we can conclude that most genes are lowly expressed..

# Summary

There were other examples in the chapter including how to create maps, dendrograms, 3D plots and animating a 3D plot (which I have also written about). I can see myself using the correlation and cumulative plot a lot. 