網站首頁 編程語言 正文
引言
patchwork
是基于ggplot2
的拼圖包,因為ggplot2
本身沒有強大的拼圖語法,而一般使用的gridExtra
與cowplot
的拼ggplot2
圖形都存在不少問題。
我關注這個包蠻久了,現在Github上的Star數已經遠超大部分的R包,但似乎還沒有發布到CRAN。我的工作看似跟作圖相關,寫的博文大多數也如此,但實際對圖形的掌控力并不咋的,所以還是要多多學習。
下面進入正題,掌握好ggplot2
與patchwork
的基本用法,一般的圖形都可以搞定了,并必要搞的很復雜。解決問題是關鍵,認真工作也是關鍵,畫圖看起來是,其實不是。
安裝
# 需要提取安裝好devtools包, # 如果你解決安裝和載入包很麻煩,可以試試pacman包,我在簡書寫了介紹和簡單使用 devtools::install_github("thomasp85/patchwork")
導入:
p_load(patchwork) # 或 # library(patchwork)
例子
patchwork
的使用灰常簡單,使用+
把要拼的圖加在一起就可以了。
library(ggplot2) library(patchwork) p1 <- ggplot(mtcars) + geom_point(aes(mpg, disp)) p2 <- ggplot(mtcars) + geom_boxplot(aes(gear, disp, group = gear)) p1 + p2
我們不用創建對象,也可以像ggplot2
本身使用一樣相加。
ggplot(mtcars) + geom_point(aes(mpg, disp)) + ggplot(mtcars) + geom_boxplot(aes(gear, disp, group = gear))
另外,可以使用布局函數plot_layout
對拼接細節進行更細致地指定,像每個圖的范圍,圖形的排列。
p1 + p2 + plot_layout(ncol = 1, heights = c(3, 1))
如果你想要在圖形之間添加一些空間,可以使用plot_spacer()
填充一個空白格。
p1 + plot_spacer() + p2
增加花括號的使用進行嵌套可以布置更復雜的圖形:
p3 <- ggplot(mtcars) + geom_smooth(aes(disp, qsec)) p4 <- ggplot(mtcars) + geom_bar(aes(carb)) p4 + { p1 + { p2 + p3 + plot_layout(ncol = 1) } } + plot_layout(ncol = 1) ## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
括號也是可以的:
p3 <- ggplot(mtcars) + geom_smooth(aes(disp, qsec)) p4 <- ggplot(mtcars) + geom_bar(aes(carb)) p4 + ( p1 + ( p2 + p3 + plot_layout(ncol = 1) ) ) + plot_layout(ncol = 1) ## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
高級特性
除了將圖形添加到一起,patchwork
定義了一些有意思的操作符,,簡化了上面的嵌套語法。-
操作符將左右兩邊的對象放在同一個嵌套層,而不是像+
號把右邊放入左邊的嵌套層。
p1 + p2 + p3 + plot_layout(ncol = 1) ## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
p1 + p2 - p3 + plot_layout(ncol = 1) ## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
現在p1+p2
與p3
在同一嵌套層。
|
與/
操作符可以用來水平和垂直布局。
(p1 | p2 | p3) / p4 ## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
子圖多的時候同時修改圖形比較麻煩,patchwork
提供了*
與&
用來簡化代碼,它們都可以將同一個操作應用到所有圖形。
(p1 + (p2 + p3) + p4 + plot_layout(ncol = 1)) * theme_bw() ## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
需要注意*
只會應用到當前嵌套層。
p1 + (p2 + p3) + p4 + plot_layout(ncol = 1) & theme_bw() ## `geom_smooth()` using method = 'loess' and formula 'y ~ x'
&
可以用遞歸的方式應用到所有層面。
原文鏈接:https://www.jianshu.com/p/e57555d48c91
相關推薦
- 2022-04-10 微信小程序音樂播放器
- 2022-05-21 python中的變量命名規則詳情_python
- 2022-07-03 c語言中的二級指針做函數參數說明_C 語言
- 2022-08-18 詳解python?一維、二維列表的初始化問題_python
- 2022-09-08 Pytorch中expand()的使用(擴展某個維度)_python
- 2022-07-21 nginx的配置優化及經常使用的超時配置說明
- 2022-02-03 Windows10 可以上網(會斷)顯示無Internet鏈接
- 2022-09-15 React手寫一個手風琴組件示例_React
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支