ggplot2包提供了一个基于全面而连贯的语法的绘图系统,它弥补了R语言中创建图形缺乏一致性的缺点,使得用户可以创建有创新性、新颖的图形类型。
ggplot2中最简单的绘图方式是利用qplot()函数,使用格式为:
qplot(x, y, color=, shape=, size=, alpha=, geom=, method=, formula=, facets=, xlim=, ylim=, xlab=, ylab=, main=, sub=)
下面通过一些例子来看看qplot()的工作原理,以下代码创建了一个以气缸为条件的每加仑英里数的箱线图。真实数据点都相互叠加(添加扰动以减少重叠),箱线图的颜色依据气缸数而变化。
library(ggplot2)
mtcars$cylinder <- as.factor(mtcars$cyl)
qplot(cylinder,mpg,data=mtcars,geom = c("boxplot","jitter"),
fill=cylinder,
main = "Box plots with superimposed data points",
xlab = "Number of Cylinders",
ylab = "Miles per Gallon")
第二个例子,我们来创建一个以车重为条件的每加仑英里数的散点图矩阵,利用颜色和符号形状区分自动挡和手动挡汽车。另外,我们还将对每种传动类型添加各自的回归线和置信区间带。
library(ggplot2)
transmission <-factor(mtcars$am, levels = c(0,1), labels = c("Automatic","Manual"))
qplot(wt,mpg,data = mtcars,
color=transmission,shape=transmission,
geom = c("point","smooth"),
method="lm",formula=y~x,
xlab = "Weight",ylab = "Miles Per Gallon",
main = "Regression Example")
第三个例子,我们将创建一个分面(栅栏)图。每个分面展示了车重与每加仑英里数的散点图。传动类型定义了行分面,而气缸数则定义了列分面。数据点的大小代表了汽车马力的评分。
library(ggplot2)
mtcars$cyl <- factor(mtcars$cyl, levels = c(4,6,8),
labels = c("4 cylinders","6 cylinders","8 cylinders"))
mtcars$am <-factor(mtcars$am, levels = c(0,1),
labels = c("Automatic","Manual"))
qplot(wt,mpg,data = mtcars,facets = am~cyl, size=hp)
最后,我们以lattice包中的singer数据绘制身高分布比图,代码如下:
library(ggplot2)
data(singer, package = "lattice")
qplot(height,data = singer, geom = c("density"),
facets = voice.part~.,fill=voice.part)
ggplot2是一个强大的绘图系统,更多详情可参考:http://had.co.nz/ggplot2/