直方图和密度曲线图
直方图和密度曲线图可以展示单个变量的分布,相对于箱线图而言,它们提供了更多关于单个分布的信息,但不利于在不同组之间比较。下图展示了钻石重量的直方图和密度曲线图:
qplot(color,price/carat,data=diamonds,geom="jitter",alpha=I(1/5)) qplot(color,price/carat,data=diamonds,geom="jitter",alpha=I(1/50))
adjust控制密度曲线的平滑程度(取值越大越平滑),binwidth参数控制直方图的组距,组距较小显示更多细节,组距较大反应总体特征。
qplot(carat,data=diamonds,geom="histogram",binwidth=1,xlim=c(0,3)) qplot(carat,data=diamonds,geom="histogram",binwidth=0.1,xlim=c(0,3))
要在不同组之间进行对比,只需要在加上一个图形映射:
qplot(carat,data=diamonds,geom="density",colour=color) qplot(carat,data=diamonds,geom="histogram",fill=color)
条形图
在离散变量的情形下,条形图和直方图类似,绘制方法是geom="bar"
qplot(color,data=diamonds,geom="bar")
时间序列中的线条图和路径图
线条图是将点从左到右进行连接,而路径图则按照点在数据集中的顺序对其进行连接。由于diamonds中没有包含时间变量,我们这里使用economics数据集,它包含美国过去40年的经济数据。下图展示了失业率随时间变化的线条图:
我们将年份映射到属性colour上,更容易看清时间的行进方向。
year <- function(x) as.POSIXlt(x)$year +1900 plot(unemploy/pop,uempmed,data=economics,geom="path",colour=year(date))
分面
分面将数据分割成若干子集,然后创建一个图形矩阵,将每一个子集绘制到图形矩阵的窗格中。qplot()中默认分面方法是将图形拆分成若干窗格,可以通过形如raw_var~col_var来指定。..density..是一个新的语法,告诉ggplot2将密度而不是频数映射到y轴。
qplot(carat,..density..,data=diamonds,facets=color~.,geom="histogram",binwidth=0.1,xlim=c(0,3))
其他选项
# qplot()中还有一些其他选项用于控制图形外观。 # xlim,ylim:设置x轴和y轴的显示区间,例如xlim=c(0,20) # log:对变量的对数操作 # main:图形的主标题,以大字号显示 # xlab,ylab:设置x轴和y轴的标签文字
qplot(carat,price,data=dsmall,xlab="Price ($)",ylab="Weight (carats)",main = "Price-wight relationship")
qplot(carat,price,data=dsmall,xlab=expression(frac(price,carat)),ylab="Weight (carats)",main = "small demonds",xlim=c(2,1))