一、在R中安装ggplot2
1 | install.packages("ggplot2") |
二、ggplot2全局总览
ggplot2中的函数可以分为以下几大类:1
2
3
4
5
6
7element_ 主题设置中的参数,调整细节
geom_ 主要作图函数,区分作图类型,比如是柱状图还是点图
scale_ 修改默认颜色等设置
stat_ 数据变换
theme_ 主题设置
coord_ 坐标轴转换
facet_ 分面作图,分组作图,放在不同页面上
三、gplot2的绘图步骤
3.1.初始化一个ggplot对象
在绘制图形之前,需要使用ggplot函数(
ggplot()
)初始化一个ggplot对象,可以理解为创建一块画布,接下来的一切工作都在这块画布上进行。官网给出的初始化代码是这样的:1
ggplot(data = NULL, mapping = aes(), ..., environment = parent.frame())
我们主要修改的是前两个参数,即
data
和mapping
data:你的数据框;
mapping:用于绘图的变量,通俗来说就是x轴和y轴所代表的变量。
3.2 画一个散点图
- 上一步已经创建了一块画布,现在就在画布上画一幅散点图:
1
2
3
4
5#首先生成自变量x和因变量y
x = factor(rep(letters[1:3], each = 10))#使用了rep函数生成因子a,b,c各10个
y=rnorm(30)
#然后将x和y组合成数据框,命名为df
df=data.frame(x,y)
1 | #现在可以画图了 |
- 画出来是这样的:
上面什么都没显示,只是一张空画布,这是因为并没有指定绘图格式(此时我们仅仅告诉了系统要画一幅画,并且所用数据为df这个数据框,x和y轴分别是x,y这两个变量,但是并没有具体讲要怎么画,画什么)
现在加上一层geom_point()
,用于绘制散点图。这样绘图代码就变成了这个样子:1
ggplot(df, aes(x, y)) +geom_point()
画出来的图像是这样的:
这次的结果和预想的就一样了。
3.3 尝试再添加一层
- 在上面已经绘制了散点图的画布上再添加一层(注意是在同一张画布上操作):
1 | #生成新的数据框ds,本行代码具体解释见下方【注释】 |
【注释】
在生成ds时,用到了
do.call()
和lapply()
。
先看lapply
,它有两个参数,一个是split(df, df$x)
,另一个是匿名函数function(d)
:
1
2
3 function(d) {
data.frame(mean = mean(d$y), sd = sd(d$y), x = d$x)
}
split(df, df$x)
的作用是将df这个数据框按照x列的取值不同分为3部分(因为x可取a,b,c):
1 | > split(df, df$x) |
通过
lapply
函数,对上面的这3个子数据框分别用匿名函数
进行作用,得到的结果是这样子的:
1 | > lapply(split(df,df$x),function(d){data.frame(mean=mean(d$y),sd=sd(d$y),x=d$x)}) |
最后在最外层用
do.call()
将上面的3个子数据框按行合并(使用rbind()
),就得到了最终的数据框ds了:
1 | > ds |