R语言两大底层绘图系统
grid 图形系统可以很容易地控制图形基础单元,给予编程者创作图形极大的灵活性。grid 图形系 统还可以产生可编辑的图形组件,这些图形组件可以被复用和重组,并能通过 grid.layout()等函数, 把图形输出到指定的位置上。grid 包中没有提供生成统计图形及完整绘图的函数,因此很少直接使用 grid 包来分析与展示数据。
lattice包通过一维、二维或三维条件绘图,即所谓的栅栏(trellis)图来对多元变量关系进行直观展示。相较基础绘图函数,是直接在图形设备上绘图的,lattic包绘图函数返回 trellis对象。在命令执行时,栅栏图会被自动打印,所以看起来就像是 lattice()函数直接完成了绘图。
ggplot2 包则基于一种全面的图形语法,提供了一种全新的图形创建方式,这套图形语法把绘图过程归纳为数据(data)、转换(transformation)、度量(scale)、坐标系(coordinate)、元素(element)、指引(guide)、显示(display)等一系列独立的步骤,通过将这些步骤搭配组合,来实现个性化的统计绘图。
ggplot2 是一个功能强大且灵活的 R 包,由 Hadley Wickham 编写,它可以生成优雅而实用的图形。ggplot2 中的 gg 表示图形语法(grammar of graphic),这是一个通过使用“语法”来绘图的图形概念。ggplot2 主张模块间的协调与分工,整个 ggplot2 的语法框架如下图所示,主要包括数据绘图部分与美化细节部分。
三种绘图包对比
ggplot2这么优秀,可以说很大部分是因为同行的衬托。
---------------------------base包------------------------------
df<-read.csv("Facet_Data.csv", header = TRUE)
plot(df$SOD, df$tau)#,pch=21,lty=0.25,col="grey10")
hist(df$SOD,breaks =30,ylim=c(0,40),main = "")
boxplot(SOD~Class,data=df,xlab="Class",ylab="SOD")
-------------------------lattice包------------------------------
library(lattice)
p1<-xyplot(SOD~tau,df,col="black")
p2<-histogram(~SOD,df,type="count",nint=30,col="white")
p3<-bwplot(SOD~Class,df,xlab="Class",
par.settings = canonical.theme(color = FALSE))
library(gridExtra)
grid.arrange(p1,p2,p3, ncol = 3, nrow = 1)
--------------------------ggplot2包---------------------------
library(ggplot2)
p1<-ggplot(df, aes(x=SOD,y=tau)) +
geom_point() #shape=21,color="black",fill="red",size=3,stroke=0.1
p2<-ggplot(df, aes(SOD)) +
geom_histogram(bins=30,colour="black",fill="white")
p3<-ggplot(df, aes(x=Class,y=SOD)) +
geom_boxplot()
library(gridExtra)
grid.arrange(p1,p2,p3, ncol = 3, nrow = 1)
一对比就发现ggplot2做出的图多么的高大上了吧!
声明:部分图片及代码来源于《R语言数据可视化之美专业图表绘制指南》
本期内容到此结束
敬请期待下期内容
想要学习更多数据分析知识请扫描下方二维码,关注“数据分析成长记”微信公众号,更多精彩文章等你来读!
也可以进我们的交流群,作图所用相关数据在交流群分享!