使用ggplot2绘图的本质,是把数据映射到几何客体的美学属性上。
1. 层(layer)
2. 绘图函数
- qplot()
· 类似于Base系统的plot(), 参数包含 aesthetics / geom / facet ...
· 隐藏了绘图实现的细节
- ggplot()
· 是核心, 可以实现qplot()无法实现的功能
· 调用ggplot()本身并不能实现绘图, 要在其基础上添加层(如geom_point())才可以
3. 用 qplot() 画图
library(ggplot2) # 加载ggplot2包 qplot(Wind, Temp, data=airquality, color=Month) # color=Month使得颜色按照月份渐变 airquality$Month <- factor(airquality$Month) # Month变量转换成factor,即分类变量 qplot(Wind, Temp, data=airquality, color=Month) # 此时图标每个月份对应一个颜色 qplot(Wind, Temp, data=airquality, color=I("red")) # 使用I所有点的颜色会变成指定颜色 qplot(Wind, Temp, data=airquality, shape=Month) # color=Month使得不同月份的数据的点的形状不同 qplot(Wind, Temp, data=airquality, size=Month) # color=Month使得不同月份的数据的点的大小不同 qplot(Wind, Temp, data=airquality, size=I(1)) # 使用I所有点的大小设置为指定的大小 qplot(Wind, Temp, data=airquality, size=I(3), xlab="Wind(mph)", ylab="Temperature", main="Wind vs. Temp") # 加入轴标签和图名 qplot(Wind, Temp, data=airquality, geom=c("point","smooth")) # smooth会给一条拟合回归线,算是统计信息,阴影为置信区间 qplot(Wind, Temp, data=airquality, color=Month, geom=c("point","smooth")) # 每个月份不同颜色,并且每个月份数据各自拟合了对应颜色的回归线 qplot(Wind, Temp, data=airquality, facets=.~Month) # 把整个面板分成了一行五列,每一列对应一个月份 qplot(Wind, Temp, data=airquality, facets=Month~.) # 把 .~ 放在Month后面,则变成五行一列,每一行对应一个月份 qplot(Wind, data=airquality, facets=Month~.) # 只传一个参数则默认柱状图,传两个参数则为散点图 qplot(y=Wind, data=airquality) # 若已写明y=...,则仍然为散点图 qplot(Wind, data=airquality, fill=Month) # 得到累加的柱状图,并且不同月份使用了不同颜色表示 qplot(Wind, data=airquality, geom="density", color=Month) # geom=“density”绘制频率分布的轮廓线,color=Month生成每个月份对应轮廓线 qplot(Wind, data=airquality, geom="dotplot") # geom="dotplot"绘制点图
4. 用 ggplot() 画图
library(ggplot2) # 引入ggplot2包 ggplot(airquality, aes(Wind, Temp)) + geom_point(color="steelblue", alpha=0.4, size=5) # ggplot内为数据层和美学层,再加上几何客体层即可绘制图形,图形设为蓝色,0.4的透明度,点的尺寸为5 ggplot(airquality, aes(Wind, Temp)) + geom_point(aes(color=factor(Month)), alpha=0.4, size=5) # 每个月份对应一个颜色,注意颜色属性要放在aes美学层中 ggplot(airquality, aes(Wind, Temp)) + geom_point() + geom_smooth() # 在几何客体层添加统计信息,即,添加拟合回归线和置信区间 ggplot(airquality, aes(Wind, Temp)) + geom_point() + stat_smooth() # 在统计层添加统计信息 ggplot(airquality, aes(Wind, Temp)) + stat_smooth() # 只留下统计层,则只得到拟合回归线和置信区间,而没有显示点 ggplot(airquality, aes(Wind, Temp)) + stat_smooth(method="lm", se=FALSE) # 使用线性回归方法设置回归线,置信区间不显示 ggplot(airquality, aes(Wind, Temp)) + stat_smooth(method="lm", se=FALSE, aes(color=factor(Month))) # 每个月份对应一条回归线,使用不同颜色显示 ggplot(airquality, aes(Wind, Temp, color=factor(Month))) + stat_smooth(method="lm", se=FALSE) # 也可把color=factor(Month)直接放在aes层中 ggplot(airquality, aes(Wind, Temp, color=factor(Month),group=1)) + geom_point() + stat_smooth(method="lm", se=FALSE) # group=1把所有数据当作一组数据拟合回归线,点仍然是五种不同颜色 ggplot(airquality, aes(Wind, Temp, color=factor(Month))) + geom_point() + stat_smooth(method="lm", se=FALSE, aes(group=1)) + stat_smooth(method="lm", se=FALSE) # 把group=1放入统计层,并再添加一个统计层,这样整体的数据和按月份的数据均会展示,即产生6条拟合回归线 library(RColorBrewer) # 加载RColorBrewer包,用于设置颜色 myColors <- c(brewer.pal(5, "Dark2"), "black") # 从Dark2调色板中选取5个颜色,第6个颜色设置为黑色 display.brewer.pal(5, "Dark2") # 显示Dark2调色板中的5个颜色 ggplot(airquality, aes(Wind, Temp, color=factor(Month))) + geom_point() + stat_smooth(method="lm", se=FALSE, aes(group=1, color="All")) + stat_smooth(method="lm", se=FALSE) + scale_color_manual("Month", values=myColors) # 把myColors中的颜色设置到图上 ggplot(airquality, aes(Wind, Temp, color=factor(Month))) + geom_point() + stat_smooth(method="lm", se=FALSE) + scale_color_manual("Month", values=myColors) + facet_grid(.~Month) # 面层,facet_grid(.~Month)使面板分为一行五列, facet_grid(Month~.)使面板分为一列五行 ggplot(airquality, aes(Wind, Temp, color=factor(Month))) + geom_point() + stat_smooth(method="lm", se=FALSE) + scale_color_manual("Month", values=myColors) + facet_grid(.~Month) + theme_classic() # 主题层, theme_classic()使背景色全部为白色, 使用 ?theme 查看帮助文档