patchworklib,一款強大的Python庫!

科技繼續進擊 2024-04-23 08:36:53

你好,我是堅持分享幹貨的 EarlGrey,翻譯出版過《Python編程無師自通》、《Python並行計算手冊》等技術書籍。

如果我的分享對你有幫助,請關注我,一起向上進擊。

來源丨網絡

一、問題

如果想把多個圖合並放在一個圖裏,如圖,該如何實現

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

二、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三、Python

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

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

pip3 install patchworklibimport patchworklib as pwimport 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|ax2ax12.savefig("ax12.png")#省略 ax1、ax2、ax4繪制過程ax124 = ax1|ax2|ax4ax124.savefig("..//ax124.png")#省略 ax124、ax3、ax5繪制過程ax12435 = ax124/(ax3|ax5)ax12435.savefig("../img/ax12435.png")

- EOF -

文章已經看到這了,別忘了在右下角點個“贊”和“在看”鼓勵哦~

推薦閱讀 點擊標題可跳轉

1、Python 項目工程化最佳實踐

2、Python 可以比 C 還要快!

3、streamlit,一個超強的 Python 庫

4、豆瓣8.9分的C++經典之作,免費送!

5、Python 3.12 版本有什麽變化?

回複關鍵詞「 pybook03」,領取進擊的Grey與小夥伴一起翻譯的《Think Python 2e》電子版回複關鍵詞「書單02」,領取進擊的Grey整理的 10 本 Python 入門書的電子版

告訴你更多細節幹貨

歡迎圍觀我的朋友圈

👆每天更新所想所悟

1 阅读:205

科技繼續進擊

簡介:感謝大家的關注