R绘图 概述
R 是一个开源的统计和绘图系统。绘图系统主要包括base和grid系统,而lattice包与ggplot2包正是基于grid构建,它们都有自己独特的图形语法。
1. R语言原生的绘图系统 R Graphics 已经非常强大了,可以绘制 非常炫目的图片,但是需要耐心调试。
除了基础图形,grid、lattice和ggplot2软件包也提供了图形系统,它们克服了R基础图形系统的低效性,大大扩展了R的绘图能力。
2. grid图形系统 可以很容易控制图形基础单元,给予编程者创作图形极大的灵活性。grid较少直接使用,适合需要自己写绘图包、实现新创意时刻再回头学习。
3. lattice包通过一维、二维或三维条件绘图,即所谓的栅栏(trellis)图形来对多元变量关系进行直观展示。lattice系统原则上能绘制任何复杂图形。Lattice package is a powerful and elegant data visualization system that aims to improve on base R graphs.
4. ggplot2包则基于一种全面的图形“语法”,提供了一种全新的、统一风格的图形创建方法。绘图神器,既快又好。ggplot2 is a powerful and a flexible R package, implemented by Hadley Wickham, for producing elegant graphics.
生物信息与R语言QQ群: 187923577
sthda:使用R base,Lattice,ggplot2,3D画图
R graph gallery 各种R图片和源码
在线书籍
bookdown.org/ 在线R电子书集合
R Graphics Cookbook, 2nd edition 各种画图方案
R Graphics Third Edition: by Paul Murrell R绘图系统的作者
R原生绘图命令要点
基础绘图包在R语言被安装后即存在,可直接使用,永不升级。基础绘图包不算Low,很多CNS文章仍在使用。”钻石恒久远、经典永留存“,所谓颜值不在于绘图包是否高级,主要在于线条的粗细、精心的排版、文字与图形之间的比例、以及有点儿"品位"的颜色搭配。
1. 基础绘图包中的高级绘图函数(也翻译做 高水平画图命令),绘制图像主体,包括:plot()泛型函数(generic method)、boxplot()盒型图、barplot()条形图、hist()直方图或金字塔图、pie()饼图、dotchart()克利夫兰点图和coplot()条件图等(后两个有些冷门)。
这里有一个实践过程中容易混淆的地方:大部分par()函数的参数(即:函数中的参数,不是低级绘图函数)不仅可以自己使用,也可以直接在上述其它高级绘图函数中使用,效果等同于在par()中使用(par是什么?是绘图设置函数)。一些参数只能在par()中使用,高级绘图函数无法实现其功能,如: ask; fig; fin; lheight; mai; mar; mfcol; mfrow; mfg; new; oma; omd; omi; pin; plt; ps; pty; usr; xlog; ylog等(注意:这些是函数内部的参数,不是函数)。
2. 基础绘图包中的低级绘图函数(也译为 低水平画图命令),无法(凭空)绘图,即只有在高级绘图函数绘制出来的图形中有效,主要起添加修饰辅助作用,如:text()加文本, legned()加图例, axis()绘制坐标轴, points()加散点, titles()加标题, arrows()加箭头, box()绘制图形边框, abline()加直线, clip()修剪图形, locator()识别图中的点的坐标, layout()切分画布, lines()加线条, segments()加线段, rug()加小地毯, polygon()构建多边形, mtext()在图形四周添加文字, grid()添加背景网格线。
3.此外还包括图形的交互与参数,图形设备,动态图形等
R基础绘图 实例与解析
文献美图复现 系列:
- image()画热图
- rpubs:公众号或博客的草稿
常见图片与R语言代码示例/实现
- Vega: 输入json,输出 Canvas or SVG 格式图片。
- R 语言 | 用ggplot2画2个分类变量的计数柱状图
- pie plot | ggplot2 画饼状图,排序并标注文字
- ggplot2 | 单细胞类间比较的火山图 - 经典效果
- ggplot2 | line plot 分组及均值线:聚类后的表达变化趋势图
- R 语言 | 公众号封面 Art using R
基本图形
高级图形
艺术效果
现在开始学习 R 绘图 !