R语言数据可视化之美:专业图表绘制指南
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.6.7 位置调整

在geom_×××()函数中,参数position表示绘图数据系列的位置调整,默认为"identity"(无位置调整),这个参数在绘制柱形图和条形图系列时经常用到,以绘制簇状柱形图、堆积柱形图和百分比堆积柱形图等。ggplot2位置调整参数如表1-6-7所示。在柱形图和条形图系列中,position的参数有4种:①identity:不做任何位置调整,该情况在多分类柱形图中不可行,序列间会遮盖,但是在多序列散点图、折线图中即可行,不存在遮盖问题;②stack:垂直堆叠放置(堆积柱形图);③dodge:水平抖动放置(簇状柱形图,position=position_dodge());④fill:百分比化(垂直堆叠放置,如百分比堆积面积图、百分比堆积柱形图等)。其中,箱形图和抖动散点图的位置调整如图1-6-26所示。构造的数据集为:

表1-6-7 ggplot2位置调整参数

图1-6-26 箱形图和抖动散点图的位置调整

        N<-100
        df<-data.frame(group=rep(c(1,2), each=N*2),
                      y=append(append(rnorm(N,5,1), rnorm(N,2,1)), append(rnorm(N,1,1), rnorm(N,3,1))),
                      x=rep(c("A", "B", "A", "B"), N))

新手工具

对于R语言新手,在这里推荐一款RStudio的插件esquisse:可通过交互操作实现简单的ggplot2图表,自动生成并导出绘图代码,供用户再做进一步的调整与美化。esquisse的安装可以通过使用devtools包来完成:

        devtools::install_github("dreamRs/esquisse")

如果要在RStudio中启动esquisse,既可以通过点击RStudio界面的“Tools”→“Addins”→“ggplot2 builder”选项;也可以在“Console”命令框中输入语句:esquisse:::esquisser(),其界面如图1-6-27所示。

图1-6-27 esquisse交互操作界面

高手必备

特别强调的是,要想熟练使用ggplot2绘制图表,就必须深入理解ggplot与geom对象之间的关系。在实际绘图语句中存在如表1-6-8所示的3种情况。在表中的案例,我们使用的数据集为向量排序函数sort()和正态分布随机数生成函数rnorm()构造的df1和df2。

表1-6-8 ggplot与geom对象之间的关系情况

        N<-20
        df1 <- data.frame(x=sort(rnorm(N)), y=sort(rnorm(N)))
        df2 <- data.frame(x=df1$x+0.1*rnorm(N), y=df1$y+0.1*rnorm(N))

ggplot与geom对象之间的关系主要体现在如下两点。

ggplot(data=NULL, mapping = aes()):ggplot内有data、mapping两个参数,具有全局优先级,可以被之后的所有geom对象所继承(前提是geom内未指定相关参数)。

geom_×××(data=NULL, mapping = aes()):geom对象内同样有data和mapping参数,但geom内的data和mapping参数属于局部参数,仅作用于geom对象内部。