打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
只要 20 行 R 代码,小白也能搞定教科书式的海报配图
生物学霸
丁香通出品
轻松采购 无忧科研

公众号内回复【代码】直接下载 R 代码模板


每次参加学术会议,除了围观大牛讲座,小闺女最喜欢的项目就是逛吃看海报啦。


图片来源:soogif.com


作为学术成果展示的一种重 (tōu) 要 (lǎn) 方式,一张高质量的学术海报不仅需要准确地传达研究内容,更要逻辑清晰简单粗暴 (啊不对划掉) 明了。这时,新颖有审美的海报配图,作为大部分海报的主体,就显得尤为重要了。


然而我们常常看到的画风是这样的:

 


还有这样的:



这霓虹灯似的闪耀配色让仙女看了想打人,直男看了想报警。



那教科书里的配图长什么样呢,小闺女随手操起手边的 Qualify 复习资料举个例子 (并不小心暴露了学科):


Mittelbach,G.G. (2012) Community Ecology. Sinauer Associates. Page 213


Primack,R.B. Essentials of Conservation Biology (Sixth edition). SinauerAssociates. Page 179


天呐,这不是今年最流行的不仅温暖也无限温柔的莫兰迪色系吗?!(没听过莫兰迪色系的落伍科研圈朋友请自行搜索)


其实把这样的配图用到自己的学术海报里并不难实现,下面我们就来教大摆脱辣眼睛的默认配色,用 R 轻松绘出教科书同款配图。



01

用 par() 函数设置图片基本参数


熟练使用 par() 函数是画一张精美图片的第一步,par() 函数的常用参数有:


mfrow 或 mfcol:设置一版图片的数量,比如一版六张图片排两行三列就是 mfrow=c(2,3)


bg:设置背景颜色,如果不设的话图片导出之后背景是透明的哦


tcl:设置刻度线的长度和方向,绝对值为长度,正负为方向,正的为刻度线在图片内,负的为刻度线在图片外


cex.axis:刻度数字的大小


cex.lab:坐标名称的大小


oma 或 omi:设置整个图片区域的边框宽度,格式为 c(下,左,上,右)


mar 或 mai:设置每张小图的边框宽度,同样格式为 c(下,左,上,右),如果发现导出的图片小图的坐标没有显示完全就把这个参数的左侧或下侧调宽就可以了


las:设置坐标数字的方向,默认值是 0,也就是数字和坐标轴平行,这样画出来的纵坐标数字是横着的,非常难看,只要设成 las=1 就可以解决


mpg:设置坐标名称、坐标轴数字、坐标轴线与图片的距离,格式为 c(坐标名称与图片距离,坐标轴数与图片距离,坐标轴线与图片距离)。比如当坐标轴数字位数比较多的时候,会和坐标轴名称重叠,这时只需将这个参数的第一个数字调大就可以啦


pty:设置小图的形状,「m」即小图在小图区域内占最大面积,「s」即不管图片什么尺寸小图都是标准的正方形,强迫症专用


usr:图片区域坐标。除了可以设定图片区域的坐标以外,还可以用来直接提取图片区域坐标,给图片加背景色时有用


还有很多其他有用的参数,参见 par() 函数的帮助


我这张图的 par() 是这样设置的:

02

给图片加背景和刻度线


(1)背景色:用刚才提到的 par() 函数里面的 usr 参数提取图片区域坐标,再用 rect() 函数画一个长方形当做背景,代码如下:

下面这个链接的 Rcolor.pdf 涵盖了大部分常用的颜色,把 col 参数后面替换为喜欢的颜色就可以了,上面的 cornsilk 比较接近教科书中最常用的淡黄色,其他常用的颜色还有淡绿、淡蓝、淡粉等等。


不饱和色度是莫兰迪色系的精髓。


http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf


这个时候图长这样:



(2)刻度线:用 abline () 函数画直线,颜色设成白色,h 设水平刻度线的纵坐标,v 设垂直刻度线的横坐标,代码如下:

加了刻度线图长这样:




03

画图的主体部分


这一部分要根据图的形式来自己创作啦,有一些细节的建议


(1)点:R 的点默认为黑色,点比较密集的情况下,黑色点不好看,建议用灰色,或者红蓝绿等等不是很深的颜色,可以在上面的 Rcolor.pdf 挑选。


R 的点默认为空心,个人认为也不好看,可以用 pch 参数调成实心或其他形状。 所有可选的形状如下



(2)线:R 默认的线有点细,不是很明显,我习惯加粗,把 lwd 参数调大一点就可以了。

 

 

(3)文字:R 的 text() 函数中设定的坐标默认为文字中间点的位置,所以如果几行文字横坐标相同,那么就是中间对齐。


 如果想调成左对齐或右对齐,就调整 pos 参数,如 pos=4 时,设定的坐标为文字左侧位置,这时如果有多行文字就是左对齐了。


(4)坐标轴:和边框一样,坐标轴也会被刻度线盖住,我一般在用 plot() 函数画图时先不画坐标轴,即设置参数 xaxt 和 yaxt 为 「n」,最后再用 axis() 函数画坐标轴。


有时候想让坐标轴显示的数字和默认值不同,或者想隔一两个刻度点显示一个数字,都可以用这个方法,单独画坐标轴。


(5)边框:之前加白色刻度线时会将边框盖住一部分,在画完图之后,用 box() 函数再加一次边框就可以了。

最终成品:



同样也可以用这个方法画教科书级柱状图,比如:

 

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
R中设置图形参数
R语言(绘图入门)
R plot()参数详解
R语言学习笔记 【转】
R的日记-绘图参数设置函数par()详解
做微生物生态该学多少技术之《R语言实战》-xph学习笔记
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服