(This article was first published on

**YGC » R**, and kindly contributed to R-bloggers)In order to provide an option to compare graphs produced by basic internal plot function and ggplot2, I recreated the figures in the book, 25 Recipes for Getting Started with R, with ggplot2.

The code used to create the images is in separate paragraphs, allowing easy comparison.

**1.16 Creating a Scatter Plot**

plot(cars)

ggplot(cars,aes(speed,dist))+geom_point()

**1.17 Creating a Bar Chart**

heights <- tapply(airquality$Temp, airquality$Month, mean) par(mfrow=c(1,2)) barplot(heights) barplot(heights, main="Mean Temp. by Month", names.arg=c("May", "Jun", "Jul", "Aug", "Sep"), ylab="Temp (deg. F)")

require(gridExtra) heights=ddply(airquality,.(Month), mean) heights$Month=as.character(heights$Month) p1 <- ggplot(heights, aes(x=Month,weight=Temp))+ geom_bar() p2 <- ggplot(heights, aes(x=factor(heights$Month, labels=c("May", "Jun", "Jul", "Aug", "Sep")), weight=Temp))+ geom_bar()+ opts(title="Mean Temp. By Month") + xlab("") + ylab("Temp (deg. F)") grid.arrange(p1,p2, ncol=2)

**1.18 Creating a Box Plot**

y <- c(-5, rnorm(100), 5) boxplot(y)

ggplot()+geom_boxplot(aes(x=factor(1),y=y))+xlab("")+ylab("")

**1.19 Creating a Histogram**

data(Cars93, package="MASS") par(mfrow=c(1,2)) hist(Cars93$MPG.city) hist(Cars93$MPG.city, 20)

p <- ggplot(Cars93, aes(MPG.city)) p1 <- p + geom_histogram(binwidth=diff(range(Cars93$MPG.city))/5) p2 <- p + geom_histogram(binwidth=diff(range(Cars93$MPG.city))/20) grid.arrange(p1,p2, ncol=2)

**1.23 Diagnosing a Linear Regression**

data(iris) m = lm( Sepal.Length ~ Sepal.Width, data=iris) par(mfrow=c(2,2)) plot(m)

r <- residuals(m) yh <- predict(m) scatterplot <- function(x,y, title="", xlab="", ylab="") { d <- data.frame(x=x,y=y) p <- ggplot(d, aes(x=x,y=y)) + geom_point() + opts(title=title) + xlab(xlab) + ylab(ylab) return(p) } p1 <- scatterplot(yh,r, title="Residuals vs Fitted", xlab="Fitted values", ylab="Residuals") p1 <- p1 +geom_hline(yintercept=0)+geom_smooth() s <- sqrt(deviance(m)/df.residual(m)) rs <- r/s qqplot <- function(y, distribution=qnorm, title="Normal Q-Q", xlab="Theretical Quantiles", ylab="Sample Quantiles") { require(ggplot2) x <- distribution(ppoints(y)) d <- data.frame(x=x, y=sort(y)) p <- ggplot(d, aes(x=x, y=y)) + geom_point() + geom_line(aes(x=x, y=x)) + opts(title=title) + xlab(xlab) + ylab(ylab) return(p) } p2 <- qqplot(rs, ylab="Standardized residuals") sqrt.rs <- sqrt(abs(rs)) p3 <- scatterplot(yh,sqrt.rs, title="Scale-Location", xlab="Fitted values", ylab=expression(sqrt("Standardized residuals"))) p3 <- p3 + geom_smooth() hii <- lm.influence(m, do.coef = FALSE)$hat p4 <- scatterplot(hii,rs) p4 <- p4+ geom_hline(yintercept=0)+ geom_smooth() + geom_text(aes(x=min(hii)+diff(range(hii))*0.3, y=min(rs)+diff(range(rs))*0.04, label="-- Cook's distance", size=3))+ opts(legend.position="none") grid.arrange(p1,p2,p3,p4, ncol=2)

### Related Posts

To

**leave a comment**for the author, please follow the link and comment on his blog:**YGC » R**.R-bloggers.com offers

**daily e-mail updates**about R news and tutorials on topics such as: visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...