今天看了关于ggplot2绘图理念的一篇文章,解答了一些困惑,摘录了一些内容备忘。
感谢作者,放上知乎原文链接: 如何使用 ggplot2.
什么时候color、shape、size、fill写外面,什么时候写里面?
aes实际上做的是将aes里的向量的顺序逐个地绘制。任何与数据向量顺序相关,需要逐个指定的参数都必须写在aes里。
想统一整个图层时就放到aes外,想分成不同组调整,并且已经有一个与x、y长度一致的分组变量了,那就放到aes里。
1. 放在 aes 内部
p <- ggplot(mtcars, aes(wt, mpg)) #<---- code 1
p + geom_point(aes(colour = qsec)) #<---- code 2
code 1: ggplot首先载入了这个mtcars的集合,然后指定给了mpg作为其x坐标位置,wt为y坐标位置。
code 2: 指定了qsec作为其染色的标准(分组),qsec为numeric变量,因此,应该选择连续型的标尺,而不是分组染色。然后开始绘制,读取mtcars
m
p
g
[
1
]
、
m
t
c
a
r
s
mpg[1]、mtcars
mpg[1]、mtcarswt[1],确定位置,然后为其染成mtcars$qsec[1]颜色;再绘制第二点。
因此,aes里的美学特征其实就是按照向量顺序指定每个位置的美学特征
2. 不放在 aes 内部
p + geom_point(color = "green")
所有点染成绿色
p + geom_point(aes(color = "green") )
所有点变成粉色(默认的第一种颜色),ggplot将"green"视为颜色变量
一直认为ggplot2绘图有两种函数,
一类是geom_,绘图用的;
一类是stat_,统计变换用的。
其实,不太恰当。
geom_point的默认stat=“identity”,即不做任何统计变换
stat_sum中还有个参数geom,可以设置成“point”
stat_和geom_并不是两种绘图方法,
其实它们是ggplot2每一个图层绘制都必须有的,
是一个图层的一体两面。