patchworklib,一款強大的 Python 庫

數據分析那些事
6 min readJan 2, 2024

--

如果想把多個圖合併放在一個圖裡,R語言 和 Python 都有對應的解決方案, 分別是patchwork包和patchworklib庫。

來源:Python大數據分析

01 問題

如果想把多個圖合併放在一個圖裡,如圖,該如何實現?

好在R語言 和 Python 都有對應的解決方案, 分別是patchwork包和patchworklib庫。

02 R語言

安裝

# install.packages("devtools")
devtools::install_github("thomasp85/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

兩行,第一行三個圖,第二行一個圖

p3 <- ggplot(mtcars) + geom_smooth(aes(disp, qsec))
p4 <- ggplot(mtcars) + geom_bar(aes(carb))

(p1 | p2 | p3) /
p4

03 Python

Patchworklib 是與 matplotlib 相關的繪圖(簡單 matplotlib 繪圖、Seaborn 繪圖(軸級和圖形級)和plotnine 繪圖)的通用編輯器。這個庫的靈感來自於 ggplot2 的patchwork。因此,作為原始拼湊,使用者可以輕鬆地僅使用 /|對齊 matplotlib 圖。

Patchworklib 提供了該問題的解決方案。透過使用 patchworklib,任何型別的seaborn 和plotnine 圖都可以作為matplotlib 子圖進行處理。

安裝

pip3 install patchworklib
import patchworklib as pw
import seaborn as sns

fmri = sns.load_dataset("fmri")
ax1 = pw.Brick(figsize=(3,2))
sns.lineplot(x="timepoint", y="signal", hue="region", style="event", data=fmri, ax=ax1)
ax1.legend(bbox_to_anchor=(1.05, 1.0), loc='upper left')
ax1.set_title("ax1")

titanic = sns.load_dataset("titanic")
ax2 = pw.Brick(figsize=(1,2))
sns.barplot(x="sex", y="survived", hue="class", data=titanic, ax=ax2)
ax2.move_legend(new_loc='upper left', bbox_to_anchor=(1.05, 1.0))
ax2.set_title("ax2")

ax12 = ax1|ax2
ax12.savefig("ax12.png")
#省略 ax1、ax2、ax4繪製過程

ax124 = ax1|ax2|ax4
ax124.savefig("../img/ax124.png")
#省略 ax124、ax3、ax5繪製過程
ax12435 = ax124/(ax3|ax5)
ax12435.savefig("../img/ax12435.png")

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※

我是「數據分析那些事」。常年分享數據分析乾貨,不定期分享好用的職場技能工具。各位也可以關注我的Facebook,按讚我的臉書並私訊「10」,送你十週入門數據分析電子書唷!期待你與我互動起來~

文章推薦

常用的幾個經典Python模組

都2023年了,為什麼資料孤島問題還沒解決!

MySQL必須掌握4種語言!

商業分析應該怎麼做?一篇文章把思維和工具說清楚了!

跟資料打交道的人都得會的這8種資料模型,滿足工作中95%的需求

回顧十週入門數據分析系列文:

關注數據君的臉書:

我是「數據分析那些事」。常年分享數據分析乾貨,不定期分享好用的職場技能工具。按贊我的臉書,會有豐富資料包贈送唷!

--

--

數據分析那些事
數據分析那些事

Written by 數據分析那些事

這是一個專注於數據分析職場的內容部落格,聚焦一批數據分析愛好者,在這裡,我會分享數據分析相關知識點推送、(工具/書籍)等推薦、職場心得、熱點資訊剖析以及資源大盤點,希望同樣熱愛數據的我們一同進步! 臉書會有更多互動喔:https://www.facebook.com/shujvfenxi/

No responses yet