生物信息学习的正确姿势
NGS系列文章包括NGS基础、高颜值在线绘图和分析、转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这)、ChIP-seq分析 (ChIP-seq基本分析流程)、单细胞测序分析 (重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程)、DNA甲基化分析、重测序分析、GEO数据挖掘(典型医学设计实验GEO数据分析 (step-by-step))、批次效应处理等内容。
R语言中的ggplot2是最美的绘图包之一。但调整主题的细节需要写大量代码,而且还要反复修改、预览,很是费时费力。
当然你可以用Adobe Illustrator等工具做后期编辑,但要是图重画,所有后期编辑的工作又要重来,无法实现可重复分析,每个修改都很崩溃。
有没有更方便的方式调整主题细节呢?
ggThemeAssist横空出世,它依赖shiny (>= 0.13), miniUI (>= 0.1.1), rstudioapi (>= 0.5), ggplot2和formatR,可以对ggplot2图形结果直接修改,并实时预览效果,同时编辑结束返回代码。相当于一个帮你写代码的翻译官!
此包必须在Rstudio环境中使用。运行下面示例代码:
# install.packages("ggThemeAssist")
library(ggplot2)
library(ggThemeAssist)
# 使用mtcars生成一个点图示例
gg <- ggplot(mtcars, aes(x = hp, y = mpg, colour = as.factor(cyl))) + geom_point()
# 开始调整主题
ggThemeAssistGadget(gg)
看到打开了一个窗口,上部为图形预览窗口,下部有6个选项卡,分别对应各类主题细节的调整,下面我们进行详细解释。
设置Settings
绘图维度 Plot dimensions
Width、Height可鼠标点击文本框右侧箭头来微调图片宽、高尺寸,也可直接修改数字。
通用选项 General options
Use FormatR 选项可以设置输出R代码的格式,勾选时的可读性更高,这可是R界大神,统计之都和R语言大会创始人谢益辉写的包。
默认勾选时,输出代码格式如下:
gg + theme(panel.background = element_rect(fill = NA),
plot.background = element_rect(fill = NA))
不勾选,编辑后返回代码格式如下:
gg + theme(panel.background = element_rect(fill = NA), plot.background = element_rect(fill = NA))
默认选项虽然占用多行,但更利于阅读。具体选择则凭借个人喜好。个人推荐勾选,可实现多行并缩进排版,方便阅读和与同行交流。
Multiline results 是选择输出绘图代码形式,可以是行相加所有参数的形式,也可以是一行行独立累加主题的形式。
默认不勾选多行,推荐这个,示例如下:
gg + theme(panel.grid.major = element_line(linetype = "solid"),
panel.grid.minor = element_line(linetype = "solid"),
plot.background = element_rect(linetype = "blank"))
勾选多行会是独立累加主题的格式,示例如下,此种方案方便累加后去除参数,但变量会多次重复出现,各有利弊:
gg <- gg + theme(panel.grid.major = element_line(linetype = 'dashed'))
gg <- gg + theme(panel.grid.minor = element_line(linetype = 'dashed'))
gg <- gg + theme(panel.background = element_rect(fill = 'gray87'))
面板和背景 Panel & Backgroud
绘图区背景 Plot Background
即整个作图区的背景,包括填充色Fill,外边框类型Type、线宽Size和颜色Colour
面板背景 Panel Backgroud
即坐标轴围成的数据分布区域,属性同上,包括填充色Fill,外边框类型Type、线宽Size和颜色Colour
主网格 Grid Major
即图中X、Y轴刻度线对应的网格,建议使用,方便辅助识别数据位置;
次网格 Grid Minor
即图中X、Y轴刻度线间的补充网格,看具体情况使用,方便进一步辅助识别特定数据准确位置;
坐标轴文字 Axis text
Family:字体家族,默认为Sans,和我们常用的Arial类似;还常用Courier
系列等宽字体,如显示核酸、蛋白序列对齐时要求使用;Helvetica是Science杂志推荐字体;
Face: 字体样式,如标准 plain
(Adobe系列软件称Regular)、加粗 bold、斜体 italic、粗斜体 bold.italic
Size:字体大小,推荐8(无纸质版在线网络杂志,如Nature Communication
、Communication Biology
、Scientific Report
等);“7”是Nature
、Science
最终发表字体大小;最小不要小于5,否则看不清。
Colour:颜色,默认为30%灰度 gray30
,想突出坐标同刻度数值,可选black或gray0;
Hjust:X轴刻度值水平位置调整,默认0.5为相对刻度线居中对齐,0为相对刻度线左对齐;1为相对刻度线右对齐
Vjust:Y轴刻度值垂直位置调整,默认0.5为相对刻度线居中对齐,0为相对刻度线下对齐;1为相对刻度线上对齐
Angle:坐标轴角度,如标签过长,可调为30度或45度旋转,避免文字重叠的同时还可以节约空间,一般要配合Hjust等于1(右对齐)才更美观;一般情况下要对x或y轴单独修改
x坐标轴文字属性 Axis text.x
默认可以不修改,自动继承Axis text的属性。仅用于x轴属性需单独设置时修改,解释同上
y坐标轴文字属性 Axis text.y
默认可以不修改,自动继承Axis text的属性。仅用于y轴属性需单独设置时修改,解释同上
坐标轴线属性 Axis line
主要修改X/Y轴的线型Type、宽度Size和颜色Colour
刻度线 Axis ticks
同坐标轴线,可修改X/Y轴的线型Type、宽度Size和颜色Colour
标签 Lable
Title:图表标题,直接输入即可,方便吧
x-Axis label: 添加X轴标签
y-Axis label: 添加y轴标签
Colour:图例标题
Fill label:填充色标签
Size label:点大小标签
Alpha label:透明度标签
Linetype label:线型标签
Shape label:形状标签
标题属性 Plot Title
与坐标轴属性类似,详见前面“坐标轴文字 Axis text”说明
Family:字体家族
Face: 字体样式,如标准plain、加粗bold、任何italic、粗斜体bold.italic
Size:字体大小,标题可以使用12,即标准字体系1.5倍,并加粗
Colour:颜色
Hjust:沿X轴水平位置调整
Vjust:沿Y轴垂直位置调整
Angle:文字旋转角度,逆时针
坐标轴标签属性 Axis Labels
解释同上
图例 Legend
图例位置 Legend position
Position:位置,可选无-none,左-left,右-right,上-top,下-buttom
Direction:方向,水平-horizontal,垂直-vertical
图例标题属性 Legend Title
Family:字体家族
Face: 字体样式
Size:字体大小,可调8-10,个人喜欢和坐标轴同样大小,有人喜欢大点
Colour:颜色
图例文字属性 Legend Text
同上
图例背景属性 Legend Background
括填充色Fill,外边框类型Type、线宽Size和颜色Colour
图例核心属性 Legend Keys
即图例中颜色图状的属性,同上
子标题和图注
可以修改子标题(Subtitle)和图注(Caption)中的内容。同时还可以修改文字的属性,如字体家族、样式、大小、颜色和水平位置
以上面板中可修改上百个参数,并提供几百个属性值的选择。这些要是靠自己记住,那可真是太难了。此包为R语言绘图的细节调节提供了极大帮助。
而且调好样式之后,点击done就能马上输出规范的代码,方便可重复计算和进一步修改。这就是代码的强大之处。
gg + theme(plot.subtitle = element_text(size = 8,
colour = "gray25", hjust = 0.25), axis.line = element_line(linetype = "dotdash"),
panel.grid.minor = element_line(colour = "gray95",
linetype = "dotted"), axis.text = element_text(size = 8,
face = "bold", colour = "black",
hjust = 1), axis.text.x = element_text(size = 1,
angle = 45), legend.key = element_rect(fill = "antiquewhite4"),
legend.background = element_rect(fill = "gray93",
colour = "antiquewhite4", size = 1,
linetype = "solid")) +labs(title = "Title for figure ", x = "x-Axis label",
colour = "汽纲数量", fill = "fill title",
subtitle = "Subtitle")
注意:在使用中最好不要有中文,否则会出现引号缺失,导致代码无法运行的情况。想要添加中文信息的话可以在代码输出之后手动添加,重新运行。
R环境信息
> sessionInfo()
R version 3.6.0 (2019-04-26)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 17134)
Matrix products: default
locale:
[1] LC_COLLATE=Chinese (Simplified)_China.936 LC_CTYPE=Chinese (Simplified)_China.936
[3] LC_MONETARY=Chinese (Simplified)_China.936 LC_NUMERIC=C
[5] LC_TIME=Chinese (Simplified)_China.936
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] shiny_1.3.2 ggThemeAssist_0.1.5 ggplot2_3.1.1
loaded via a namespace (and not attached):
[1] Rcpp_1.0.1 pillar_1.4.1 compiler_3.6.0 formatR_1.7 later_0.8.0 plyr_1.8.4 tools_3.6.0
[8] digest_0.6.19 jsonlite_1.6 tibble_2.1.3 gtable_0.3.0 pkgconfig_2.0.2 rlang_0.3.4 cli_1.1.0
[15] rstudioapi_0.10 withr_2.1.2 dplyr_0.8.1 grid_3.6.0 tidyselect_0.2.5 glue_1.3.1 R6_2.4.0
[22] sessioninfo_1.1.1 purrr_0.3.2 magrittr_1.5 scales_1.0.0 promises_1.0.1 htmltools_0.3.6 assertthat_0.2.1
[29] mime_0.6 colorspace_1.4-1 xtable_1.8-4 httpuv_1.5.1 labeling_0.3 miniUI_0.1.1.1 lazyeval_0.2.2
[36] munsell_0.5.0 crayon_1.3.4
Graphpad,经典绘图工具初学初探
维恩(Venn)图绘制工具大全 (在线+R包)
在R中赞扬下努力工作的你,奖励一份CheatShet
别人的电子书,你的电子书,都在bookdown
R语言 - 入门环境Rstudio
R语言 - 热图绘制 (heatmap)
R语言 - 基础概念和矩阵操作
R语言 - 热图简化
R语言 - 热图美化
R语言 - 线图绘制
R语言 - 线图一步法
R语言 - 箱线图(小提琴图、抖动图、区域散点图)
R语言 - 箱线图一步法
R语言 - 火山图
R语言 - 富集分析泡泡图
R语言 - 散点图绘制
R语言 - 韦恩图
R语言 - 柱状图
R语言 - 图形设置中英字体
R语言 - 非参数法生存分析
R语言 - 绘制seq logo图
WGCNA分析,简单全面的最新教程
psych +igraph:共表达网络构建
一文学会网络分析——Co-occurrence网络图在R中的实现
一文看懂PCA主成分分析
富集分析DotPlot,可以服
基因共表达聚类分析和可视化
R中1010个热图绘制方法
还在用PCA降维?快学学大牛最爱的t-SNE算法吧, 附Python/R代码
一个函数抓取代谢组学权威数据库HMDB的所有表格数据
文章用图的修改和排版
network3D: 交互式桑基图
network3D 交互式网络生成
Seq logo 在线绘制工具——Weblogo
生物AI插图素材获取和拼装指导
ggplot2高效实用指南 (可视化脚本、工具、套路、配色)
图像处理R包magick学习笔记
SOM基因表达聚类分析初探
利用gganimate可视化全球范围R-Ladies(R社区性别多样性组织)发展情况
一分钟绘制磷脂双分子层:AI零基础入门和基本图形绘制
AI科研绘图(二):模式图的基本画法
你知道R中的赋值符号箭头(<-)和等号(=)的区别吗?
R语言可视化学习笔记之ggridges包
利用ComplexHeatmap绘制热图(一)
ggplot2学习笔记之图形排列
R包reshape2,轻松实现长、宽数据表格转换
用R在地图上绘制网络图的三种方法
PCA主成分分析实战和可视化 附R代码和测试数据
iTOL快速绘制颜值最高的进化树!
12个ggplot2扩展包帮你实现更强大的可视化
编程模板-R语言脚本写作:最简单的统计与绘图,包安装、命令行参数解析、文件读取、表格和矢量图输出
R语言统计入门课程推荐——生物科学中的数据分析Data Analysis for the Life Sciences
数据可视化基本套路总结
你知道R中的赋值符号箭头<-
和等号=
的区别吗?
使用dplyr进行数据操作30例
交集intersect、并集union、找不同setdiff
R包reshape2,轻松实现长、宽数据表格转换
1数据类型(向量、数组、矩阵、 列表和数据框)
2读写数据所需的主要函数、与外部环境交互
3数据筛选——提取对象的子集
4向量、矩阵的数学运算
5控制结构
6函数及作用域
7认识循环函数lapply和sapply
8分解数据框split和查看对象str
9模拟—随机数、抽样、线性模型
1初识ggplot2绘制几何对象
2图层的使用—基础、加标签、注释
3工具箱—误差线、加权数、展示数据分布
4语法基础
5通过图层构建图像
6标度、轴和图例
7定位-分面和坐标系
8主题设置、存储导出
9绘图需要的数据整理技术
创建属于自己的调色板
28个实用绘图包,总有几个适合你
热图绘制
R做线性回归
绘图相关系数矩阵corrplot
相关矩阵可视化ggcorrplot
绘制交互式图形recharts
交互式可视化CanvasXpress
聚类分析factoextra
LDA分析、作图及添加置信-ggord
解决散点图样品标签重叠ggrepel
添加P值或显著性标记ggpubr
Alpha多样性稀释曲线rarefraction curve
堆叠柱状图各成分连线画法:突出组间变化
冲击图展示组间时间序列变化ggalluvial
桑基图riverplot
微生物环境因子分析ggvegan
五彩进化树与热图更配ggtree
多元回归树分析mvpart
随机森林randomForest 分类Classification 回归Regression
加权基因共表达网络分析WGCNA
circlize包绘制circos-plot
R语言搭建炫酷的线上博客系统
28个实用绘图包,总有几个适合你
热图绘制
R做线性回归
绘图相关系数矩阵corrplot
相关矩阵可视化ggcorrplot
绘制交互式图形recharts
交互式可视化CanvasXpress
聚类分析factoextra
LDA分析、作图及添加置信-ggord
解决散点图样品标签重叠ggrepel
添加P值或显著性标记ggpubr
Alpha多样性稀释曲线rarefraction curve
堆叠柱状图各成分连线画法:突出组间变化
冲击图展示组间时间序列变化ggalluvial
桑基图riverplot
微生物环境因子分析ggvegan
五彩进化树与热图更配ggtree
多元回归树分析mvpart
随机森林randomForest 分类Classification 回归Regression
加权基因共表达网络分析WGCNA
circlize包绘制circos-plot
R语言搭建炫酷的线上博客系统
维恩(Venn)图绘制工具大全 (在线+R包)
R包circlize:柱状图用腻了?试试好看的弦状图
获取pheatmap聚类后和标准化后的结果
增强火山图,要不要试一下?
一个震撼的交互型3D可视化R包 - 可直接转ggplot2图为3D
赠你一只金色的眼 - 富集分析和表达数据可视化
是Excel的图,不!是R的图
道友,来Rstudio里面看动画了
用了这么多年的PCA可视化竟然是错的!!!
画图三字经 生信视频 生信系列教程
心得体会 TCGA数据库 Linux Python
高通量分析 免费在线画图 测序历史 超级增强子
生信学习视频 PPT EXCEL 文章写作 ggplot2
海哥组学 可视化套路 基因组浏览器
色彩搭配 图形排版 互作网络
自学生信 2019影响因子 GSEA 单细胞
后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集