ggplot2:数据分析与图形艺术(第二版)
1. 首先,了解mpg数据库
cty和hwy分别记录城市和高速公路架势油耗量
displ:发动机排量
drv:驱动系统,前轮(f),后轮(r),四轮(4)
model:车辆型号
class车辆类别
2. ggplot2图像的三个基本构成(以mpg数据库为例)
ggplot(mpg,aes(displ,hwy))+geom_point()
(1)数据:mpg
(2)图形属性映射,设定变量如何映射到图层的图形属性上。发动机尺寸displ对应x轴,耗油量对应y轴
(3)几何对象:至少一层,用于指定绘图所用的几何对象。散点图
3. 颜色、大小、形状和其他图形属性
数据——>(映射)图形属性
library(cowplot)
p1<-ggplot(mpg,aes(displ,hwy))+geom_point()
p2<-ggplot(mpg,aes(displ,cty,color=class))+geom_point()
p3<-ggplot(mpg,aes(displ,hwy))+geom_point(aes(color="blue"))
p4<-ggplot(mpg,aes(displ,hwy))+geom_point(color="blue")
plot_grid(p1, p2, p3, p4)
4. 分面:facet_wrap(~分类变量)
分面跟映射类似,可以在图像中展示分类变量。他会将数据分割为若干子集,创建相应矩阵,将每个子集绘制到图形矩阵的窗格中。
ggplot(mpg,aes(displ,hwy))+geom_point()+facet_wrap(~class)
5. 在图中添加平滑曲线
p1<-ggplot(mpg,aes(displ,hwy))+
geom_point()+
geom_smooth()
p2<-ggplot(mpg,aes(displ,hwy))+
geom_point()+
geom_smooth(se = F)#不想绘制置信区间
#method是geom_smooth的重要参数,
#method="loess"是n较小时的默认选项,曲线的平滑程度由span控制
p3<-ggplot(mpg,aes(displ,hwy))+
geom_point()+
geom_smooth(span=0.2)
p4<-ggplot(mpg,aes(displ,hwy))+
geom_point()+
geom_smooth(span=1)
plot_grid(p1, p2, p3, p4)
#Loess对大数据并不很适用
#method="gam",调用公式formula=y~s(x)
library(mgcv)
p1<-ggplot(mpg,aes(displ,hwy))+
geom_point()+
geom_smooth(method="gam",formula = y~s(x))
p2<-ggplot(mpg,aes(displ,hwy))+
geom_point()+
geom_smooth(method = "lm")
plot_grid(p1, p2)
6. 箱线图和扰动点图
要了解连续变量在不同分类变量取值下的变化情况,例如要探讨不同车辆类别的耗油量情况
p1<-ggplot(mpg,aes(drv,hwy))+
geom_point()#散点图
p2<-ggplot(mpg,aes(drv,hwy))+
geom_jitter()#扰动点图
p3<-ggplot(mpg,aes(drv,hwy))+
geom_boxplot()#箱线图
p4<-ggplot(mpg,aes(drv,hwy))+
geom_violin()#小提琴图
plot_grid(p1,p2,p3,p4)
7. 直方图和频数多边图
可以展示单个变量的分布,计算观测的数量
p1<-ggplot(mpg,aes(hwy))+
geom_histogram()#直方图
p2<-ggplot(mpg,aes(hwy))+
geom_freqpoly()
p3<-ggplot(mpg,aes(hwy))+
geom_freqpoly(binwidth = 2.5)
p4<-ggplot(mpg,aes(hwy))+
geom_freqpoly(binwidth = 1)#测试组距
plot_grid(p1,p2,p3,p4)
p1<-ggplot(mpg,aes(displ,color = drv))+#将变量映射为填充色
geom_freqpoly(binwidth = 0.5)
p2<-ggplot(mpg,aes(displ,fill = drv))+
geom_histogram(binwidth = 0.5)+
facet_wrap(~drv,ncol = 1)
plot_grid(p1,p2)
8. 条形图
9. 时间序列中的折线图和路径图
10. 修饰坐标轴
11. 输出
12. 快速绘图