ggplot2设置坐标轴范围_ggplot2学习笔记之图形排列
作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源
又到了亲爱的严涛老师时间:诺奖文章里面的动图绘制教程来了!!R包ggseqlogo |绘制序列分析图ggplot2高效实用指南 (可视化脚本、工具、套路、配色)ComplexHeatmap |理解绘图逻辑绘制热图R语言可视化学习笔记之ggridges包
简介
R语言基本绘图函数中可以利用par()以及layout()来进行图形排列,但是这两个函数对于ggplot图则不太适用,本文主要讲解如何对多ggplot图形多页面进行排列。主要讲解如何利用包gridExtra、cowplot以及ggpubr中的函数进行图形排列。
绘制图形
#load packageslibrary(gridExtra)library(cowplot)library(ggpubr)#dataset ToothGrowth and mtcarsmtcars$name mtcars$cyl head(mtcars[, c("name", "wt","mpg", "cyl")])
#First let's create some plots
#Box plot(bxp)
bxp #Dot plot(dp)
dp #An ordered Bar plot(bp)
bp color="white", #Set bar border colors to white
palette = "jco", #jco jourbal color palette
sort.val = "asc", #Sort the value in ascending order
sort.by.groups = TRUE, #Sort inside each group
x.text.angle=90 #Rotate vertically x axis texts )
bp+font("x.text", size = 8)
#Scatter plots(sp)
sp conf.int = TRUE, #Add confidence interval
color = "cyl", palette = "jco",#Color by group cyl
shape = "cyl" #Change point shape by groups cyl
)+
stat_cor(aes(color=cyl), label.x = 3) #Add correlation coefficientsp
图形排列
多幅图形排列于一面
ggpubr::ggarrange()
ggarrange(bxp, dp, bp+rremove("x.text"), labels = c("A", "B", "C"), ncol = 2, nrow = 2)
cowplot::plot.grid()
plot_grid(bxp, dp, bp+rremove("x.text"), labels = c("A", "B", "C"), ncol = 2, nrow = 2)
gridExtra::grid.arrange()
grid.arrange(bxp, dp, bp+rremove("x.text"), ncol=2, nrow=2)
排列图形注释
ggpubr::annotate_figure()
figure annotate_figure(figure, top=text_grob("Visualizing mpg", color = "red",face = "bold", size=14), bottom = text_grob("Data source:\n mtcars data set",color = "blue", hjust = 1, x=1, face = "italic", size=10), left = text_grob("Figure arranged using ggpubr", color = "green", rot = 90),right = "I'm done, thanks :-)!", fig.lab = "Figure 1", fig.lab.face = "bold")
绘图面板对齐
绘制生存曲线
library(survival)
head(colon[, c(1:4)])
#Fit survival curves
fit library(survminer)
ggsurv pval = TRUE, pval.coord=c(500, 0.4), #Add p-value
risk.table = TRUE #Add risk table)
names(ggsurv)
`
## [1] "plot" "table" "data.survplot" "data.survtable"
ggsurv是一个包含两部分的list
plot:生存曲线
table:风险表
可以用ggarrange()进行排列这两者ggarrange(ggsurv$plot, ggsurv$table, heights = c(2, 0.7), ncol = 1, nrow = 2)
上图中的坐标轴没有对齐,可以通过参数align来设置
ggarrange(ggsurv$plot, ggsurv$table, heights = c(2, 0.7), ncol = 1, nrow = 2, align = "v")
改变排列图的行列
设置面板为两行两列,其中sp占据第一行的两列,bxp以及dp置于第二行的两列
ggarrange(sp, #First row with scatter plot(sp)
ggarrange(bxp, dp, ncol = 2, labels = c("B","C")),#Second row with box and dot plot
nrow = 2, labels = "A" #Labels of the scatter plot)
R包cowplot
cowplot::ggdraw()可以将图形置于特定位置, ggdraw()首先会初始化一个绘图面板, 接下来draw_plot()则是将图形绘制于初始化的绘图面板中,通过参数设置可以将图形置于特定位置。
draw_plot(plot, x=0, y=0, width=1, height=1)
其中:
plot:将要放置的图形
x,y:控制图形位置
width,height:图形的宽度和高度
draw_plot_label():为图形添加标签
draw_plot_label(label, x=0, y=1, size=16, ...)
其中:
label:标签
x,y:控制标签位置
size:标签字体大小
下面通过一个例子来讲解如何将多个图形放置在特定的位置。
ggdraw()+ draw_plot(bxp, x=0, y=0.5, width=0.5, height = 0.5)+
draw_plot(dp, x=0.5, y=0.5, width = 0.5, height = 0.5)+
draw_plot(bp, x=0, y=0, width = 1.5, height = 0.5)+
draw_plot_label(label = c("A", "B", "C"), size = 15, x=c(0, 0.5, 0), y=c(1, 1, 0.5))
R包gridExtra
gridExtra::arrangeGrop()改变行列分布
下面将sp置于第一行并横跨两列,而bxp和dp分别分布于第二行两列
grid.arrange(sp, #First row with one plot spaning over 2 columns
arrangeGrob(bxp, dp, ncol = 2), #Second row with 2plots in 2 different columns
nrow=2) #number of rows
也可以通过函数grid.arrange中的layout_matrix来设置复杂的图形布局
grid.arrange(bp, #bar plot spaning two columns
bxp, sp, #box plot amd scatter plot
ncol=2, nrow=2, layout_matrix=rbind(c(1, 1), c(2, 3)))
要相对grid.arrange()以及arrangeGrob()的输出进行注释,首先要利用as_ggplot()将其转化为ggplot图形,进而利用函数draw_plot_label()对其进行注释。
gt p draw_plot_label(label = c("A", "B", "C"), size = 15, x=c(0, 0, 0.5), y=c(1, 0.5, 0.5))
p
R包grid
R包grid中的grid.layout()可以设置复杂的图形布局,viewport()可以定义一个区域用来安置图形排列,print()则用来将图形置于特定区域。总结起来步骤如下:
创建图形p1,p2,p3,…
grid.newpage()创建一个画布
创建图形布局,几行几列
定义布局的矩形区域
print:将图形置于特定区域
library(grid)
#Move to a new page
grid.newpage()
#Create layout:nrow=3, ncol=2
pushViewport(viewport(layout = grid.layout(nrow=3, ncol=2)))
#A helper function to define a region on the layout
define_region viewport(layout.pos.row = row, layout.pos.col = col)}
#Arrange the plots
print(sp, vp=define_region(row=1, col=1:2)) #Span over two columns
print(bxp, vp=define_region(row=2, col=1))
print(dp, vp=define_region(row=2, col=2))
print(bp+rremove("x.text"), vp=define_region(row=3, col=1:2))
设置共同图例
ggpubr::ggarrange()可以为组合图形添加共同图例
common.legeng=TRUE:在图形旁边添加图例
legend:指定legend的位置,主要选项有:top、bottom、left、right。
ggarrange(bxp, dp, labels = c("A", "B"), common.legend = TRUE, legend = "bottom")
含有边际密度图的散点图
sp palette = "jco", size=3, alpha=0.6)+border()
#Marginal density plot of x(top panel) and y(right panel)
xplot yplot #Clean the plots
xplot yplot #Arrange the plots
ggarrange(xplot, NULL, sp, yplot, ncol = 2, nrow = 2, align = "hv", widths = c(2, 1),
heights = c(1, 2), common.legend = TRUE)
ggplot图、文本、表格组合
density.p #Compute the summary table of Sepal.Lengthstable stable #Summary table plot, medium and themestable.p text text.p #Arrange the plots on the same pageggarrange(density.p, stable.p, text.p, ncol = 1, nrow = 3, heights = c(1, 0.5, 0.3))
ggplot图形中嵌入图形元素
ggplot2::annotation_custom()可以添加各种图形元素到ggplot图中
annotation_custom(grob, xmin, xmax, ymin, ymax)
其中:
grob:要添加的图形元素
xmin, xmax: x轴方向位置(水平方向)
ymin, ymax: y轴方向位置(竖直方向)
ggplot图形中添加table
density.p+annotation_custom(ggplotGrob(stable.p), xmin = 5.5, xmax = 8, ymin = 0.7)
ggplot图形中添加box plot
sp xbp ybp # Create the external graphical objects
# called a "grop" in Grid terminology
xbp_grob ybp_grob #place box plots inside the scatter plot
xmin xmax ymin ymax yoffset xoffset # Insert xbp_grob inside the scatter plots
p+annotation_custom(grob = xbp_grob, xmin = xmin, xmax = xmax,
ymin = ymin-yoffset, ymax = ymin+yoffset)+
# Insert ybp_grob inside the scatter plot
annotation_custom(grob = ybp_grob, xmin = xmin-xoffset,
xmax=xmin+xoffset, ymin=ymin, ymax=ymax)
ggplot图形添加背景
#import the imageimg.file img
利用ggpubr::background_image()为ggplot图形添加背景图
library(ggplot2)
library(ggpubr)
ggplot(iris, aes(Species,Sepal.Length))+
background_image(img)+
geom_boxplot(aes(fill=Species), color="white")+ fill_palette("jco")
修改透明度
ggplot(iris, aes(Species,Sepal.Length))+
background_image(img)+geom_boxplot(aes(fill=Species), color="white", alpha=0.5)+
fill_palette("jco")
多页排列
日常工作中我们有时要绘制许多图,假如我们有16幅图,每页排列4张的话就需要4页才能排完,而ggpubr::ggarrange()可以通过制定行列数自动在多页之间进行图形排列
multi.page
上述代码返回两页每页两图
multi.page[[1]]
multi.page[[2]]
利用ggarrange()嵌套布局
p1 p2 heights = c(1, 0.5, 0.3))
ggarrange(p1, p2, ncol = 2, nrow = 1)
SessionInfo
sessionInfo()## R version 3.4.1 (2017-06-30)## Platform: x86_64-w64-mingw32/x64 (64-bit)## Running under: Windows 10 x64 (build 15063)#### Matrix products: default#### locale:## [1] LC_COLLATE=Chinese (Simplified)_China.936## [2] LC_CTYPE=Chinese (Simplified)_China.936## [3] LC_MONETARY=Chinese (Simplified)_China.936## [4] LC_NUMERIC=C## [5] LC_TIME=Chinese (Simplified)_China.936#### attached base packages:## [1] grid stats graphics grDevices utils datasets methods## [8] base#### other attached packages:## [1] survminer_0.4.0 survival_2.41-3 ggpubr_0.1.5 magrittr_1.5## [5] cowplot_0.8.0 ggplot2_2.2.1 gridExtra_2.2.1#### loaded via a namespace (and not attached):## [1] zoo_1.8-0 purrr_0.2.3 reshape2_1.4.2## [4] splines_3.4.1 lattice_0.20-35 colorspace_1.3-2## [7] htmltools_0.3.6 yaml_2.1.14 survMisc_0.5.4## [10] rlang_0.1.2 foreign_0.8-69 glue_1.1.1## [13] bindrcpp_0.2 bindr_0.1 plyr_1.8.4## [16] stringr_1.2.0 munsell_0.4.3 gtable_0.2.0## [19] ggsci_2.7 psych_1.7.5 evaluate_0.10.1## [22] labeling_0.3 knitr_1.17 parallel_3.4.1## [25] broom_0.4.2 Rcpp_0.12.12 xtable_1.8-2## [28] scales_0.4.1 backports_1.1.0 cmprsk_2.2-7## [31] km.ci_0.5-2 mnormt_1.5-5 png_0.1-7## [34] digest_0.6.12 stringi_1.1.5 dplyr_0.7.2## [37] KMsurv_0.1-5 rprojroot_1.2 tools_3.4.1## [40] lazyeval_0.2.0 tibble_1.3.3 tidyr_0.7.0## [43] pkgconfig_2.0.1 Matrix_1.2-11 data.table_1.10.4## [46] assertthat_0.2.0 rmarkdown_1.6 R6_2.2.2
## [49] nlme_3.1-131 compiler_3.4.1
R统计和作图
- 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可视化竟然是错的!!!
R语言可视化学习笔记之ggridges包
万能转换:R图和统计表转成发表级的Word、PPT、Excel、HTML、Latex、矢量图等
那天空飘过的梅花月饼,是今年中秋最好的礼物
ggplot2设置坐标轴范围_ggplot2学习笔记之图形排列相关推荐
- ggplot2设置坐标轴范围_ggplot2画图时出现重合的点以及标签如何处理?有现成的包ggrepel
公众号:生物信息学习 ggplot2画图时出现重合的点以及标签如何处理?有现成的包ggrepelmp.weixin.qq.com 在R中散点图的时候会经常出现,点重合,点的标签重合比较严重的现象,这 ...
- ggplot2设置坐标轴范围_ggplot2|详解八大基本绘图要素
本文首发于微信公众号" 生信补给站 ",期待您的关注!!! "一张统计图形就是从数据到几何对象(geometric object, 缩写为geom, 包括点.线.条形等) ...
- UE5 Shader基础学习笔记——01-12 图形管线/创建shader/数学节点/贴图压缩/LerpDotUV/常用向量/坐标空间/MinMaxClampSaturate/法线贴图混合
UE5 Shader基础学习笔记--01-12 图形管线/创建shader/数学节点/贴图压缩/LerpDotUV/常用向量/坐标空间/MinMaxClampSaturate/法线贴图混合 Lec01 ...
- Python学习笔记·交互式图形编程
Python学习笔记·交互式图形编程 注:在校计算机学生一名,菜鸟一枚,最近开始学习Python的基础知识希望有什么不对的地方各位大佬能够不令赐教! 课程是在中国大学MOOC上学的,有兴趣的同学可以自 ...
- python图形设置_python学习笔记——基本图形绘制
1.python蟒蛇python蟒蛇代码 #PythonDraw.py import turtle turtle.setup(650,350,200,200)# 设置画布的长.宽.起点 turtle. ...
- ggplot2设置坐标轴范围_6.2 坐标轴:对连续变量设置坐标轴显示范围
参考自<R Graphics Cookbook> 对连续变量调整其坐标轴的显示范围和和设置其坐标轴显示的间隔,是难以避免的. 因为映射给y轴往往是连续变量,若针对y轴设置坐标轴显示范围,使 ...
- ggplot2设置坐标轴范围_matplotlib画图教程,设置坐标轴标签和间距
大家好,欢迎来到周四数据处理专题,我们今天继续matplotlib作图教程. 在上周的文章当中我们介绍了如何通过xlabel和ylabel设置坐标轴的名称,以及这两个函数的花式设置方法,可以设置出各种 ...
- ggplot2设置坐标轴范围_使用 ggplot2 进行高级绘图—R读书笔记(二)
这篇文章没有接第3章的内容,而是跳到19章总结一下ggplot2包的使用. 在R中,有大概四种独立而完整的图形系统.除了基础图形外, grid . lattice 和 ggplot2 软件包也提供了图 ...
- ggplot2设置坐标轴范围_R可视化03|ggplot2图层-几何对象图层(geom layer)
前面简单介绍ggplot2是基于图层图形语法(the Grammar of Graphics),一张完整图由不同图层叠加而成,本文介绍几何对象图层(geom layer),续前篇: R可视化01|gg ...
- ggplot2设置坐标轴范围_Matplotlib入门-2-坐标轴axis/axes设置
这里并没有涵盖所有的的关于axis的设置方法,将一些常用的操作写出来,供大家学习使用.其余的一些高级操作,作为前期学习而言也没必要展示,用到的话,后续再补充. 学习前欢乐一下:这里有个Python界未 ...
最新文章
- SpringCloud系列一:SpringCloud的简介和架构
- 【BZOJ】1711: [Usaco2007 Open]Dining吃饭
- R语言条件Logistic回归模型案例:研究饮酒与胃癌的关系
- Ubuntu安装VSCode
- 选择要加载的插件有什么用_为什么/如何PPT形状圆角化,用好这个插件,画出更多神奇形状...
- 硬件检测你用哪一款工具呢?
- condition_variable的怪事
- 在C#中IEnumerable与IEnumerator
- 机器人煮面机创始人_煮面机器人会是未来的「食神」吗?
- c语言自动插桩,静态插桩的方式来实现Hook Method
- Word2016更改不同的级别标题序号:如2.2 ,2.2.1类标题序号
- linux安装阵列卡驱动程序,linux 安装阵列卡驱动
- 通过 api 调用检查具体日期是否为法定节假日
- acdream 1401 Lempel-Ziv Compression
- 出生日期正则表达式丨出生日期年月日正则如何表达?
- msys2在windows10系统的安装
- Dev-C++安装OpenCV
- Scala核心编程 第六章—Scala面向对象编程(一)
- AI云服务大幕开启,谁的时代,谁主沉浮
- 【开发工具】 什么是Office 今天让你认识它