R数据分析:联合APA格式作图大法讲讲ggplot2和ggsci,请收藏

分享
源代码 2024-10-6 18:02:59 120 0 来自 中国
之前给各人写过一篇plot的基础操纵,信任同砚们应该没有看过瘾。不外主流的用的多的照旧ggplot2,以是本日打算联合一个形成APA样板格式图片的实例写写ggplot2的操纵和图的配色。
关于APA格式

各人可以去到美国生理学会的官网,就可以看到APA格式的具体先容了:
[图片上传失败...(image-d489d9-1657458632167)]
包罗论文模板、引注规则等等,内容可以说很丰富了,对于社科类门生,不会写论文的,这个网站就是金尺度啦,剧烈保举下。
不外我们本日关注的是内里的figure的尺度,点开主页的Tables and Figures我们进入到下一个界面:
[图片上传失败...(image-a58949-1657458632167)]
内里有表格模板,和figure模板,像表格模板内里,回归分析如何做表,因子分析如何做表等等的,人家都给了尺度模板,这些不就是许多多少同砚想要的吗,许多多少同砚跑来咨询的吗?一股脑人家美国生理学会全给各人整理好了,保举一波。具体到figure模板,内里有这么多:
[图片上传失败...(image-bdad8f-1657458632167)]
像样本纳入扫除的流程图怎么做,路径分析的图怎么做,质性研究,肴杂操持研究的图等等应有尽有无所不有,只能说---真好!
那么本文渴望将下面的这一幅APA官网上的示例柱状图用ggplot2做出来,并在做过程中联合着给各人写写ggplot2的常见操纵(ggplot2的作图原理我看网上已经有许多了,各人可以自行去搜刮学习,本文略过)
[图片上传失败...(image-19d835-1657458632167)]
实例练习

我的绘图示例数据如下:
[图片上传失败...(image-c1204f-1657458632167)]
可以看到数据中有我们画柱状图须要的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轴,就没了,如下:
[图片上传失败...(image-7c2bd3-1657458632167)]
在上面的代码继续往下写,我知道我须要一个柱状图,以是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设定的是柱子的宽度,运行代码后结果如下:
[图片上传失败...(image-44fd27-1657458632167)]
感觉还不错哦。
下一步我们须要将偏差条加上,这又是另一个geom了,此时我们继续加一个geometry,叫做geom_errorbar,同样的我们的偏差条和柱子一样须要并列分列,同时我们的偏差棒的宽度也得镌汰,于是我们设定width = .1,同时position = position_dodge(.6),写出代码如下:
geom_errorbar(width = .1, position = position_dodge(.6))运行后输出如下:
[图片上传失败...(image-bbf7c2-1657458632166)]
到如今图中有两个geom,一个bar,一个是errorbar,我们的数据信息已经全部通过geometry展示出来了。
接下来修饰细节,首先是改变颜色,我们须要指定一下映射的颜色,具体来讲我们是改变fill的填充色,以是须要用到scale_fill_manual函数。
那么颜色怎么样去选呢?大概怎么快速找到你心仪的颜色呢?
首先安装colourpicker包,然后你的Rstudio就会出现颜色选择的插件了Plot Color Helper,有了它你就可以非常方便地选出来你想要的颜色并得到颜色的表现方法:
[图片上传失败...(image-3948cf-1657458632166)]
点击Plot Colour Helper得到如下图(我只截了一张,你可以选各种颜色的):
[图片上传失败...(image-f07c10-1657458632166)]
通过这么一下,我就选了下面3个颜色,而且写出如下代码:
scale_fill_manual(values = c("#FAFAFA", "#FFA500", "#6CA6CD"))此时再运行输出结果如下:
[图片上传失败...(image-59560c-1657458632166)]
接下来我们要处置惩罚一些图中的非数据元素(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。
运行后得到下图:
[图片上传失败...(image-b6916e-1657458632166)]
到这儿另有许多的非数据元素须要改动,须要用到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)  )到此,运行上面的代码后得到下图:
[图片上传失败...(image-b282ab-1657458632166)]
根本上和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杂志的配色如下:
[图片上传失败...(image-88c02-1657458632166)]
Science配色
改为scale_fill_npg,我便可以得到nature杂志的配色:
[图片上传失败...(image-505e83-1657458632166)]
nature杂志配色
改为scale_fill_nejm,我便可以得到新英格兰医学杂志的配色:
[图片上传失败...(image-300ef3-1657458632166)]
NEJM配色
不得不说高端杂志的调色盘,照旧挺悦目标
有没有一种看了上面的内容感觉发Science有望的感觉,假如有,请收藏本文并转发扩散,谢谢各人啦,假如还没有也请收藏本文,说不定下次再回看就有了,哈哈哈哈。
祝福各人早日成为大佬。
小结

本日联合一个绘图示例,给各人整理了些许的ggplot2作图思绪和配色的操纵,假如每有ggplot原理的把握的话估计看起来照旧比力吃力,根本原理各人随意搜搜都能搜得到资源的。
感谢各人耐烦看完,本身的文章都写的很细,紧张代码都在原文中,请转发本文到朋侪圈后私信回复“数据链接”获取全部数据和本人网络的学习资料。假如对您有效请先记得收藏,再点赞分享。
也欢迎各人的意见和发起,各人想相识什么统计方法都可以在文章下留言,说不定我瞥见了就会给你写教程哦,有疑问欢迎私信,有相助意向请直接滴滴我。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-11-21 21:26, Processed in 0.162247 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表