cowplot是ggplot2包的一个简单插件(或称拓展包),它的目的是为ggplot2提供一个出版级别的主题,使用少量代码即可实现主题统一的修改,如轴标签大小、画图背景。 cowplot包的源代码在github: https://github.com/wilkelab/cowplot 图形设计 我个人觉得ggplot2的设计非常不优雅,特别是我不喜欢灰色的背景网格。 特别地,cowplot默认主题和save_plot()函数连接的非常好,输出的pdf已经漂亮地格式化了,不需要其他参数进行设定: library(cowplot) plot.mpg <- ggplot( 默认cowplot禁用图形的网格线,在很多种情况下,这是展示数据最清楚也是最优雅的方式。 通用的图形注释 最后让我们讨论一下如何用cowplot创建更加不同寻常的图形。例如,让我们用前面绘制的mpg图形,打上标签,并标记为草稿。
基本用法 plot_grid()提供了将图形排列进网格以及为它们添加标签的简单接口: require(cowplot) theme_set(theme_cowplot(font_size=12)) #
因此,cowplot的函数switch_axis_position()已经过时了。下面是一些可以用ggplot2实现的例子。 require(cowplot) require(grid) # for unit() theme_set(theme_cowplot(font_size=12)) # reduce default font
❝本节来介绍如何使用「cowplot」包所提供的「ggdraw」函数来对图形做额外的注释 加载R包 library(tidyverse) library(cowplot) 导入数据 test <-
cowplot包提供了很多函数用于注释图形,包括图形下方的注释,图内数学表达式,组合图的总标题等。因为ggplot2 v2.2.0本身就支持这些特性,所以推荐优先使用ggplot2本身的方法。 未来两种相同的功能将从cowplot移除。 使用数学表达式注释 我们通常想要使用数学表达式注释图形,比如我们想要在图形中显示一个统计分析结果。 为此,cowplot定义了函数draw_label(),它可以给一个图形添加任意检验或数学表达式。 依赖于应用,我们可能想要以绝对坐标(独立于绘图数学)或以数据的坐标指定标签位置。 虽然cowplot没有特定的函数实现这个效果,但可以通过以下少量代码实现。
强烈建议你读了前两节后,再来读次教程 R高级|利用cowplot包拼接图片(1)基本操作 R高级|利用cowplot包拼接图片(2)巧用NULL调节距离、排版 这次我们来讲overlap 调节两张图片的位置,让两张图片靠近,距离为-1 2、像PS软件那样,图层一层一层叠加 0、准备3张图片A、B、B_black 图片A library(ggplot2) library(cowplot 3、overlap(2) overlap到这里还没有结束,因为我们还没有画《R高级|利用cowplot包拼接图片(2)巧用NULL调节距离、排版》中最后的一幅图。 draw_plot(B, scale = 0.22, x=0.35, y=0.3) 总结: 到目前为止,我们花了3节内容,来讲解cowplot
往期cowplot文章 R高级|利用cowplot包拼接图片(1)基本操作 R高级|利用cowplot包拼接图片(2)巧用NULL调节距离、排版 R高级|cowplot包拼图(3):overlap R高级|cowplot包拼图(4):ggdraw和draw_* R高级| cowplot包拼图(5):theme R高级| cowplot包拼图(6):plot_grid又见plot_grid 前面所讲的图形都是简单图形的拼接 0、构图 图A library(ggplot2) library(cowplot) mpg$year = as.character(mpg$year) A <- ggplot(mpg,aes(year
有时候,我们想把画的几幅图拼接在一起,在R中,cowplot包提供了将图片拼在一起的方法。 cowplot最佳的适应对象是ggplot2包画的图,但是也可以画其他命令画的图,今天我们先将ggplot2画的图拼在一起。 0、安装cowplot包 install.packages('cowplot') 调用cowplot包 library(cowplot) 1、准备4幅图 先用ggplot2画4幅图
请先阅读前3期 R高级|利用cowplot包拼接图片(1)基本操作 R高级|利用cowplot包拼接图片(2)巧用NULL调节距离、排版 R高级|cowplot包拼图(3):overlap 0、创建图片 图片仍然使用第3期《R高级|cowplot包拼图(3):overlap》中的图A和图B。
学习这一篇教程的前提是:已经学习了上一篇《R高级|利用cowplot包拼接图片(1)基本操作》,并且熟悉了cowplot包中plot_grid函数的基本操作,我们仍然使用上一篇中的A、B 在cowplot包中并没有直接调节图片距离的函数,但是我们仍然有方法解决。 图片的距离有2种:相对距离和绝对距离。 0、组图 library(cowplot) plot_grid(A,B) 1、调节相对距离 相对距离指的是随着图片的大小不断改变,图片大,图片之间的距离就变小,图片小,图片之间的距离就大。
cowplot的很多功能实现就依赖于gtable。 最近探索了一下gtable的使用,主要是两个方面:如何进行拼图和嵌图。 使用gtable进行拼图 cowplot拼图示例 cowplot就可以很方便的进行拼图,使用plot_grid函数即可,如下图所示。 使用gtable进行嵌图 cowplot嵌图示例 cowplot进行嵌图的思路是通过创建新画布并不停叠加图层来实现,由于新图层的位置和大小可以调,也就呈现出了不同的嵌图效果。 cowplot还可以对其图表并进行叠加,思路也是一样的。 # 使用透明主题,以防止图片被覆盖 p2_new <- p2 + cowplot::theme_cowplot() # 对齐图片 align_grobs <- cowplot::align_plots
Petal.Width, colour = Species)) + geom_point() + facet_zoom(x = Species == 'versicolor') + cowplot ::theme_cowplot() ? ::theme_cowplot() ? Petal.Length, Petal.Width, colour = Species)) + geom_point() + facet_zoom(xlim = c(2, 4)) + cowplot ::theme_cowplot() ?
详细了解参考:Arranging plots in a grid • cowplot (wilkelab.org)[2] patchwork 也可以像cowplot一样,非常方便的自动添加: wrap_plots 不同于cowplot 的label 参数,patchwork 借助于theme 函数,但又不同于一般的ggplot 的数学表达。 如果是先cowplot,再反过来用patchwork呢? 读者朋友们,你们试试吧。 (wilkelab.org): https://wilkelab.org/cowplot/articles/plot_grid.html [3] Plot Assembly • patchwork ( (wilkelab.org): https://wilkelab.org/cowplot/articles/plot_grid.html
导语 GUIDE ╲ 说起R语言的拼图,可能大家一点都不陌生,比如常用的“cowplot”和“patchwork”。gridExtra包也提供了一个拼图函数”grid.arrange“。 准备工作 将cowplot、patchwork、gridExtra和aplot安装好即可。 install.packages("cowplot") install.packages("patchwork") install.packages("gridExtra") install.packages ("aplot") 接下来依次讲解每个R包的用法: 拼图R包讲解 01 cowplot cowplot是R语言中最常用的拼图软件之一。 ::theme_cowplot() + theme(axis.line = element_blank()) + theme(axis.text.x = element_text(angle
参考: Controlling Layouts • patchwork (data-imaginist.com)[1] Drawing with and on plots • cowplot (wilkelab.org 忽然发现,其实cowplot 和patchwork 也有对应的函数。 p_load(ggplot2, patchwork, cowplot) p1 <- ggplot(iris) + geom_point(aes(Sepal.Length, Sepal.Width)) 而cowplot则似乎只有坐标系的底部是与原图贴合,而左侧并没有完全贴合。 (wilkelab.org): https://wilkelab.org/cowplot/articles/drawing_with_on_plots.html
::theme_cowplot() + scale_fill_brewer(palette = "Spectral", direction = -1) + theme(legend.position ::theme_cowplot() + scale_fill_brewer(palette = "Spectral", direction = -1) + theme(legend.position ::theme_cowplot() + scale_fill_brewer(palette = "Spectral", direction = -1) + theme(legend.position ::theme_cowplot() + scale_fill_brewer(palette = "Spectral", direction = -1) + theme(legend.position ::theme_cowplot() + scale_fill_brewer(palette = "Spectral", direction = -1) + theme(legend.position
❞加载R包 library(tidyverse) library(magrittr) library(patchwork) library(aplot) library(cowplot) R种计算效应值大小 mean(data$outcome))^2) # 计算Eta-squared eta_squared <- SSB / SST ❝R中用于拼图的包有很多,小编常用的主要有「patchwork」,「cowplot 」两款,当然「aplot」也属于拼图包的范畴,但是要实现无缝隙的拼图显然「cowplot」更胜一筹。 "non")+ labs(y=NULL) p1+p2+plot_layout(guides = 'collect') aplot拼图 p1 %>% insert_right(p2) cowplot
legend.position = "none", panel.grid = element_blank()) + labs(x = "x", y = "Density") p2 合并两图 使用 cowplot 小编对该包的介绍做过几期,可见:cowplot包:用R添加水印。其他合并的方式还有:R可视乎|合并多幅图形;R可视乎|分面一页多图。 library(cowplot) # pdf("plot_cow.pdf", width = 8, height = 4) plot_grid(p1, p2, ncol = 1, nrow = 2) #
目前对于绘图,我主要使用的两个包是patchwork 和cowplot。 其实它们的绘图函数都是带有接收list 作为输入的选项。 cowplot cowplot 中,主要通过plot_grid 完成图片的排列。 wrap_plots(byrow = T, nrow = 3) 更复杂的内容 比如不同的拼接比例等等内容,可以参考:[[88-R可视化20-R的几种基于ggplot的拼图解决方案]] 如果是cowplot 用户,可以参考:Aligning plots • cowplot (wilkelab.org)[4] 参考资料 [1] Single-cell RNA-seq: Clustering Analysis (wilkelab.org): https://wilkelab.org/cowplot/articles/aligning_plots.html
_2.3.4.tar.gz" > install.packages(packageurl, repos=NULL, type="source") > library(Seurat) 载入需要的程辑包:cowplot ******************************************************** Note: As of version 1.0.0, cowplot does not To recover the previous behavior, execute: theme_set(theme_cowplot()) ***************************