百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

R语言从入门到精通:Day7

bigegpt 2024-08-26 11:04 2 浏览

原创 小浣熊 科研猫


是时候

关注

我们一波了


在向reviewer或者导师展示自己的统计分析结果时,一张图往往顶得上千言万语;在刚接触到数据时,图也能帮助我们发现数据中潜在的模式或者其中的异常值,这两个例子都说明了绘图在数据分析中的重要性。R在这方面的表现是令人惊叹的!


这次的教程的重点就是R语言中处理图形的一般方法,包括了图形的创建和保存、图形特征的修改、一些图形处理的通用方法(后面还会重点关注特定类型的图形)以及图形组合的各种方法。


写在开篇的话,本篇教程中,我们将通过测试数据带领大家一步步绘制和美化图形,内容较多,请务必静下心来学习。


温馨提示

1、本节内容重点内容较多,

务必紧跟红色标记。

2、测试数据及代码

见文末客服小姐姐二维码。


1、图形的创建和保存

我们先来看看在R中如何创建图形和保存图形,下面例子稍微有点难度,只是先给大家做个示例。大家可以试一下下面的代码,最终结果应该如图2所示。

图1:示例代码1


图2:示例代码1创建的图形


上面的代码先绑定了mtcars这个数据框(不用担心,你没有这个数据框),plot()打开了一个图形窗口并绘制了一幅散点图,abline()添加了一条最优拟合曲线,然后给图形加上了标题并解绑数据框。


R中可以通过代码或者图形界面来保存图形,代码保存图形的方法如下图:

图3:示例代码2


除了使用pdf()函数保存为pdf文件,还可以用png(),jpeg(),bmp(),tiff(),xfig()等函数保存为其他格式(建议保存为pdf文件,因为pdf是矢量图文件,方便后续编辑修改),使用方法都比较类型就不一一列举了。


图形界面的保存方法相信就不用介绍了,大家只要努力在窗口里面找到“另存为“或者“导出”或者“export”等字样的按钮就可以了,这里也不给大家举例子了。


知道怎么创建和保存图形之后,我们还是从一个简单的例子出发给大家逐一介绍图形绘制中的各个参数。


2.一个简单的例子

图4:示范数据


考虑上面的一组数据,描述了病人对两种药物A、B五个剂量水平上的响应情况。首先可以创建一幅描述dose和drugA响应关系的图形。

图5:示例代码3


图6:dose和drugA响应关系


函数plot()是R中为对象作图的一个非常重要的泛型函数,可以通过查看该函数的帮助文档进一步了解它的细节参数。下面我们的重点在于如何修改图形的外观。


修改图形参数有两种方法,一种是通过函数par()来指定图形参数实现图形特征的定义,另一种是直接为函数plot()或者其他高级绘图函提供optionname=value的键值对。

图7:示例代码4


大家可以自己试一下上面的两种方法,看生成的图形和图6有什么不一样。

就像上面的例子展示的,图形参数可以控制图形的特征,其中用于指定符号和线条类型的参数有pch,cex,lty,lwd。


参数pch用来指定绘制点时用的符号,他的值如下图:

图8:参数pch。


参数cex则指定了符号的大小,cex是一个数值,默认大小为1,cex=0.5时表示缩小为默认值的0.5倍。参数lty用来指定想要的线条类型,参数lwd指定了线条的宽度,默认为1,lwd=2时绘制一条两倍于默认宽度的线条。


大家可以试一下下面这个图是怎么通过参数设置调整出来的(答案见文末,找胖雨小姐姐索取哦)。

图9:大家可以试一下这个效果怎么做出来的。


到目前为止,我们的图形都是黑白的,为什么不给它加上色彩呢?图形里面可以上色的地方很多,下表列出一些常用的“上色”参数。

表1:“上色”参数


R中指定颜色的方法很多,举例来说,col=1、col="white"(直接用颜色的英文名)、col="#FFFFFF"(RGB的16进制颜色编码)、col=rgb(1,1,1)和col=hsv(0,0,1) 都是表示白色的等价方式。推荐初学者就用前两种(即通过颜色下标或者名称指定颜色)。函数colors()可以返回所有可用颜色的名称。给大家推家一个R中色彩的优秀图表,参见:https://www.nceas.ucsb.edu/~frazier/RSpatialGuides/colorPaletteCheatsheet.pdf

(之前有人推荐,http://research.stowers-institute.org/efg/R/Color/Chart,这个链接失效了,如果有同学还有这个图表,不妨分享给大家)。


R中的“上色”函数很多,包括rainbow()、heat.colors()、terrain.colors()、topo.colors() 以及cm.colors()。还有一些很受欢迎的“上色”函数包,比如:RColorBrewer


图形参数还可以指定字号、字体和字样。参数cex和font分别可以控制文本的大小和字体。文本参数的设置方法和前面示例参数的设置方法大同小异,具体如下表:

表2:文本参数


图形绘制完成之后,还有一个很重要但容易被忽视的步骤,图形里面要添加图例、标注、标题等,否则谁知道你的图形要表达的含义是什么呢。举例来说,下面的代码给图形添加了标题,副标题,坐标轴标签,坐标轴范围等等。

图10:示例代码5


图11:示例代码5的结果


首先,可以用函数title()为图形添加标题和坐标轴标签。比如:

title(main="main title", sub="subtitle", xlab="x-axis label", ylab="y-axis label")

函数axis()用来创建自定义的坐标轴。


函数abline()可以用来为图形添加参考线(后面的图形中会有示例)。函数legend()用来添加图例。下面是一个综合了上面几个函数绘制的图形。

图12:添加图例的示例图形


篇幅有限,就不把代码直接贴出来了,大家感兴趣可以找胖雨小姐姐要代码哦!

有时候我们要把文本或者数字标注在图形上,这件事情在很多绘图软件中是比较难实现的一个事情,但是对R语言来说,这些都是小case。函数text()和mtext()可以帮我们解决这个问题。下面是一个用mtcars数据框实现的例子。

图13:文本标注的例子

最后,图形绘制还有一个重要的参数,就是图形尺寸和边界尺寸。参数pin,mai,mar就是用于控制这两个特征的。图例如下:

图14:图形尺寸的控制


这两个图形在一张图里面,并不是ps或者美图秀秀的功劳,这就涉及到下一次教程要说到的图形的组合了。


后面几张图的代码因为篇幅有限,都没有直接贴出来,建议大家直接联系客服小姐姐索取哦~


小结

R语言绘图其实没有任何特别难的地方,只需要多费点脑子,多多记忆函数参数就OK了。记住一句话:编程是不会把电脑编坏的,不要把电脑当作娇花嫩草,多上手多练习才能记忆深刻。此外,据我以往多年的授课经验,课程越往后,掉队的人越多,所以,还在坚持的各位,要加油哦~


科研猫公众号,国内外顶尖高校博士及PI联手打造的科研共享中心,涵盖生物信息、实验技能、统计绘图等内容的一体化平台,不断放送科研干货,现已推出《R语言入门》、《科研绘图》、《生物信息数据挖掘》、《机器学习》等多个系列,广受粉丝欢迎。

团队开发的Hiplot绘图系统也受到科研人员的极大赞赏,日点击率达到上万人次。

https://hiplot.com.cn


关注公众号后,

回复【hiplot】可获取注册激活码,免费成为hiplot会员,实现一键作图;

加客服微信可免费领取科研干货。


科研干货示例

相关推荐

Docker篇(二):Docker实战,命令解析

大家好,我是杰哥上周我们通过几个问题,让大家对于Docker有了一个全局的认识。然而,说跟练往往是两个概念。从学习的角度来说,理论知识的学习,往往只是第一步,只有经过实战,才能真正掌握一门技术所以,本...

docker学习笔记——安装和基本操作

今天学习了docker的基本知识,记录一下docker的安装步骤和基本命令(以CentOS7.x为例)一、安装docker的步骤:1.yuminstall-yyum-utils2.yum-con...

不可错过的Docker完整笔记(dockerhib)

简介一、Docker简介Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,...

扔掉运营商的 IPTV 机顶盒,全屋全设备畅看 IPTV!

其实现在看电视节目的需求确实大大降低了,折腾也只是为了单纯的让它实现,享受这个过程带来的快乐而已,哈哈!预期构想家里所有设备直接接入网络随时接收并播放IPTV直播(电信点播的节目不是太多,但好在非常稳...

第五节 Docker 入门实践:从 Hello World 到容器操作

一、Docker容器基础运行(一)单次命令执行通过dockerrun命令可以直接在容器中执行指定命令,这是体验Docker最快捷的方式:#在ubuntu:15.10容器中执行ech...

替代Docker build的Buildah简单介绍

Buildah是用于通过较低级别的coreutils接口构建OCI兼容镜像的工具。与Podman相似,Buildah不依赖于Docker或CRI-O之类的守护程序,并且不需要root特权。Builda...

Docker 命令大全(docker命令大全记录表)

容器生命周期管理run-创建并启动一个新的容器。start/stop/restart-这些命令主要用于启动、停止和重启容器。kill-立即终止一个或多个正在运行的容器rm-于删除一个或...

docker常用指令及安装rabbitMQ(docker安装rabbitmq配置环境)

一、docker常用指令启动docker:systemctlstartdocker停止docker:systemctlstopdocker重启docker:systemctlrestart...

使用Docker快速部署Storm环境(docker部署confluence)

Storm的部署虽然不是特别麻烦,但是在生产环境中,为了提高部署效率,方便管理维护,使用Docker来统一管理部署是一个不错的选择。下面是我开源的一个新的项目,一个配置好了storm与mono环境的D...

Docker Desktop安装使用指南:零基础教程

在之前的文章中,我多次提到使用Docker来安装各类软件,尤其是开源软件应用。鉴于不少读者对此有需求,我决定专门制作一期关于Docker安装与使用的详细教程。我主要以Macbook(Mac平台)为例进...

Linux如何成功地离线安装docker(linux离线安装httpd)

系统环境:Redhat7.2和Centos7.4实测成功近期因项目需要用docker,所以记录一些相关知识,由于生产环境是不能直接连接互联网,尝试在linux中离线安装docker。步骤1.下载...

Docker 类面试题(常见问题)(docker面试题目)

Docker常见问题汇总镜像相关1、如何批量清理临时镜像文件?可以使用sudodockerrmi$(sudodockerimages-q-fdanging=true)命令2、如何查看...

面试官:你知道Dubbo怎么优雅上下线的吗?你:优雅上下线是啥?

最近无论是校招还是社招,都进行的如火如荼,我也承担了很多的面试工作,在一次面试过程中,和候选人聊了一些关于Dubbo的知识。Dubbo是一个比较著名的RPC框架,很多人对于他的一些网络通信、通信协议、...

【Docker 新手入门指南】第五章:Hello Word

适合人群:完全零基础新手|学习目标:30分钟掌握Docker核心操作一、准备工作:先确认是否安装成功打开终端(Windows用户用PowerShell或GitBash),输入:docker--...

松勤软件测试:详解Docker,如何用portainer管理Docker容器

镜像管理搜索镜像dockersearch镜像名称拉取镜像dockerpullname[:tag]列出镜像dockerimages删除镜像dockerrmiimage名称或id删除...