之前给大家写过一篇plot的基础操作,相信同学们应该没有看过瘾。不过主流的用的多的还是ggplot2,所以今天打算结合一个形成APA样板格式图片的实例写写ggplot2的操作和图的配色。

关于APA格式

大家可以去到美国心理学会的官网,就可以看到APA格式的详细介绍了:

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(1)

包括论文模板、引注规则等等,内容可以说很丰富了,对于社科类学生,不会写论文的,这个网站就是金标准啦,强烈推荐下。

不过我们今天关注的是里面的figure的标准,点开主页的Tables and Figures我们进入到下一个界面:

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(2)

里面有表格模板,和figure模板,像表格模板里面,回归分析如何做表,因子分析如何做表等等的,人家都给了标准模板,这些不就是好多同学想要的吗,好多同学跑来咨询的吗?一股脑人家美国心理学会全给大家整理好了,推荐一波。具体到figure模板,里面有这么多:

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(3)

像样本纳入排除的流程图怎么做,路径分析的图怎么做,质性研究,混合设计研究的图等等应有尽有无所不有,只能说---真好!

那么本文希望将下面的这一幅APA官网上的示例柱状图用ggplot2做出来,并在做过程中结合着给大家写写ggplot2的常见操作(ggplot2的作图原理我看网上已经有很多了,大家可以自行去搜索学习,本文略过)

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(4)

实例操练

我的画图示例数据如下:

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(5)

可以看到数据中有我们画柱状图需要的score和误差线需要的upper和lower的值,和分组变量reward。

第一步我们将映射关系处理好:

viz_data_one %>% ggplot(aes(x = age_group, y = framing_score, fill = reward, ymin = lower, ymax = upper))

形成下图,在上面的代码中我只是告诉ggplot,我的xy轴分别是那两个变量,用什么变量去映射到填充色,同时上下限分别是多少,仅此而已,我并没有告诉它应该用什么geom去代表我的数据,所以ggplot不知道,它也不会给你展示任何的geometry,所以代码运行后输出除了映射的xy轴,就没了,如下:

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(6)

在上面的代码继续往下写,我知道我需要一个柱状图,所以geometry应该是geom_bar,同时我要用来画柱子的变量-score就代表柱子的高度,不需要进行统计转换,所以写参数stat = 'identity';我需要3组柱子并排排列,同时设定柱子之间的宽度(position_dodge(.6))和柱子的宽度(width),到此时写出代码如下:

geom_bar(stat = 'identity',color='black',position = position_dodge(.6),width = .5)

上面代码中的position_dodge就是要求柱子并列排列,里面的第一个参数就是并列的宽度,width = .5设定的是柱子的宽度,运行代码后效果如下:

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(7)

感觉还不错哦。

下一步我们需要将误差条加上,这又是另一个geom了,此时我们继续加一个geometry,叫做geom_errorbar,同样的我们的误差条和柱子一样需要并列排列,同时我们的误差棒的宽度也得减少,于是我们设定width = .1,同时position = position_dodge(.6),写出代码如下:

geom_errorbar(width = .1, position = position_dodge(.6))

运行后输出如下:

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(8)

到现在图中有两个geom,一个bar,一个是errorbar,我们的数据信息已经全部通过geometry展示出来了。

接下来修饰细节,首先是改变颜色,我们需要指定一下映射的颜色,具体来讲我们是改变fill的填充色,所以需要用到scale_fill_manual函数。

那么颜色怎么样去选呢?或者怎么快速找到你心仪的颜色呢?

首先安装colourpicker包,然后你的Rstudio就会出现颜色选择的插件了Plot Color Helper,有了它你就可以非常方便地选出来你想要的颜色并得到颜色的表示方法:

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(9)

点击Plot Colour Helper得到如下图(我只截了一张,你可以选各种颜色的):

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(10)

通过这么一下,我就选了下面3个颜色,并且写出如下代码:

scale_fill_manual(values = c("#FAFAFA", "#FFA500", "#6CA6CD"))

此时再运行输出结果如下:

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(11)

接下来我们要处理一些图中的非数据元素(non-data elements),比如背景,比如各种标签,首先我们改xy轴的标签和图例的title,需要用到labs函数,写出代码如下:

labs( x = "Age Group",y = "Framing Score",fill = NULL,title = "Low Risk")

上面的代码,x = "Age Group",y = "Framing Score"这都很简单,因为我们的图例是针对fill的,那么此时fill在labs中就是图例的title,上面的代码将图例的title拿掉了,同时加上了整个图的title。

还有我们需要将xy轴的结合位点设置为0,这个操作是针对y轴的,需要用到scale_y_continuous,代码如下:

scale_y_continuous(expand = expansion(0), limits = c(0, 0.4), breaks = seq(0, .4, .1))

上面的代码中expand是控制y轴的上下限的伸展程度的,expansion(0)就意味着y轴不做任何拓展,limits设定y轴的界限(其实是数据量的界限),breaks设定y轴上的ticks。

运行后得到下图:

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(12)

到这儿还有很多的非数据元素需要改动,需要用到theme函数,原图的背景版是白的,我们需要panel.background参数来设置背景版,同时我希望整幅图的title居中加粗,plot.title可以实现我的需求,同理我们需要修正坐标轴得用到axis.line,axis.title和axis.text,需要修改坐标轴上的小标可以用axis.ticks等等;

上面提到的这些都叫做非数据绘图元素,对于每一种元素都有对应的元素函数,比如element_line(改变相应元素的线条类型),element_text(改变相应元素的文本,包括大小,粗细...)等等:

Each element is associated with an element function, which describes the visual properties of the element. For example, element_text() sets the font size, colour and face of text elements like plot.title.

限于本文的篇幅,也没法给大家介绍的很详细,大家可以搜搜这本书《ggplot2: Elegant Graphics for Data Analysis》,网上都有免费的,感兴趣的同学可以去阅读学习,到这儿,我们的代码写出如下:

theme( plot.margin = unit(c(1, 1, 1, 1), "cm"), panel.background = element_blank(), plot.title = element_text(size = 22, face = "bold", hjust = 0.5, margin = margin(b = 15)), axis.line = element_line(color = "black"), axis.title = element_text(size = 22, color = "black", face = "bold"), axis.text = element_text(size = 22, color = "black"), axis.text.x = element_text(margin = margin(t = 10)), axis.text.y = element_text(size = 17), axis.title.y = element_text(margin = margin(r = 10)), axis.ticks.x = element_blank(), legend.position = c(0.20, 0.8), legend.background = element_rect(color = "black"), legend.text = element_text(size = 15), legend.margin = margin(t = 5, l = 5, r = 5, b = 5), legend.key = element_rect(color = NA, fill = NA) )

到此,运行上面的代码后得到下图:

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(13)

基本上和APA官网上的示例格式一样了,示例完成!

ggsci的使用

接下来介绍ggsci,这是一个比较高级的杂志配色板:

ggsci offers a collection of high-quality color palettes inspired by colors used in scientific journals, data visualization libraries, science fiction movies, and TV shows.

这么说吧,你图画好了,像按照杂志配色,就使用这个包就行,十分简单好用,这个包提供包括自然出版集团Nature Publishing Group,美国科学促进会American Association for the Advancement of Science,新英格兰杂志The New England Journal of Medicine,还有jama,Lancet等等顶级期刊配色,所以想要成为大佬,得抓紧学会使用ggsci了。

用起来也很简单,做好图之后直接改动相应的scale就行,比如我刚刚做的图是用scale_fill_manual来定义颜色的,我直接将这行代码改为scale_fill_aaas,我就可以得到Science杂志的配色如下:

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(14)

Science配色

改为scale_fill_npg,我便可以得到nature杂志的配色:

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(15)

nature杂志配色

改为scale_fill_NEJM,我便可以得到新英格兰医学杂志的配色:

r语言多元线性回归散点图分析(结合APA格式作图大法讲讲ggplot2和ggsci)(16)

NEJM配色

不得不说高端杂志的调色盘,还是挺好看的

有没有一种看了上面的内容感觉发Science有望的感觉,如果有,请收藏本文并转发扩散,谢谢大家啦,如果还没有也请收藏本文,说不定下次再回看就有了,哈哈哈哈。

祝福大家早日成为大佬。

小结

今天结合一个画图示例,给大家整理了些许的ggplot2作图思路和配色的操作,如果每有ggplot原理的掌握的话估计看起来还是比较吃力,基本原理大家随意搜搜都能搜得到资源的。

感谢大家耐心看完,自己的文章都写的很细,重要代码都在原文中,请转发本文到朋友圈后私信回复“数据链接”获取所有数据和本人收集的学习资料。如果对您有用请先记得收藏,再点赞分享。

也欢迎大家的意见和建议,大家想了解什么统计方法都可以在文章下留言,说不定我看见了就会给你写教程哦,有疑问欢迎私信,有合作意向请直接滴滴我。

如果你是一个大学本科生或研究生,如果你正在因为你的统计作业、数据分析、模型构建,科研统计设计等发愁,如果你在使用SPSS, R,Python,Mplus, Excel中遇到任何问题,都可以联系我。因为我可以给您提供最好的,最详细和耐心的数据分析服务。

如果你对Z检验,t检验,方差分析,多元方差分析,回归,卡方检验,相关,多水平模型,结构方程模型,中介调节,量表信效度等等统计技巧有任何问题,请私信我,获取详细和耐心的指导。

If you are a student and you are worried about you statistical #Assignments, #Data #Analysis, #Thesis, #Reports, #Composing, #Quizzes, Exams.. And if you are facing problem in #SPSS, #R-Programming, #Excel, Mplus, then contact me. Because I could provide you the best services for your Data Analysis.

Are you confused with statistical Techniques like z-test, t-test, ANOVA, MANOVA, Regression, Logistic Regression, Chi-Square, Correlation, Association, SEM, multilevel model, mediation and moderation etc. for your Data Analysis...??

Then Contact Me. I will solve your Problem...

加油吧,打工人!

往期精彩

R数据分析:ROC曲线与模型评价实例

R数据分析:用R语言做潜类别分析LCA

R数据分析:什么是人群归因分数Population Attributable Fraction

R语言:利用caret的dummyVars函数设置虚拟变量

R文本挖掘:情感分析

R数据分析:如何用R做验证性因子分析及画图,实例操练

R数据分析:如何用R做多重插补,实例操练

R数据分析:倾向性评分匹配完整实例(R实现)

R数据分析:手把手教你画列线图(Nomogram)及解读结果

R数据分析:临床预测模型的样本量探讨及R实现

R数据分析:样本量计算的底层逻辑与实操,pwr包

R文本挖掘:文本聚类分析

R文本挖掘:中文文本聚类

R数据分析:混合效应模型实例

R文本挖掘:中文词云生成,以2021新年贺词为例

R文本挖掘:词云图怎么做,worldcloud2初识

R数据分析:线性回归的做法和优化实例

R数据分析:随机截距交叉滞后RI-CLPM与传统交叉滞后CLPM

R数据分析:层次聚类实操和解析,一看就会哦

R数据分析:多元逻辑斯蒂回归的做法

R数据分析:生存分析的做法与解释续

R数据分析:资料缺失值的常见处理方法

R数据分析:竞争风险模型的做法和解释二

R数据分析:交叉滞后模型非专业解释

R数据分析:逻辑斯蒂回归与泊松回归

R数据分析:结构方程模型的分组比较,实例解析

R数据分析:结构方程模型(SEM)介绍

R数据分析:潜在剖面分析LPA的做法与解释

R数据分析:再写潜在类别分析LCA的做法与解释

R数据分析:工具变量回归的做法和解释,实例解析

R数据分析:论文中的轨迹的做法,潜增长模型和增长混合模型

R数据分析:交互作用的简单斜率图做法及解释

R数据分析:纵向分类结局的分析-马尔可夫多态模型的理解与实操

R机器学习:朴素贝叶斯与支持向量机的原理与实现

R数据分析:潜变量与降维方法(主成分分析与因子分析)

R数据分析:如何用lavaan包做结构方程模型,实例解析

R数据分析:工具变量回归与孟德尔随机化,实例解析

R数据分析:孟德尔随机化分析文献解析和实例操练

R机器学习:分类算法之K最邻进算法(KNN)的原理与实现

R数据分析:二分类因变量的混合效应,多水平logistics模型介绍

R数据分析:跟随top期刊手把手教你做一个临床预测模型

,