pythonic生物人

还在用AI拼图,试试这个Python工具!

科研常用AI(Adobe Illustrator,AI)拼接多张图,这里介绍个轻量级的Python拼接图工具。


粉丝问题提出

如果有以下ABCD 4张图,如何把它们拼接在一张图中,

Image
图A
Image
图B
Image
图C
Image
图D

粉丝问题解决

通过Python patchworklib即可搞定,patchworklib通过|(代表左右排版)、/(代表上下排版)轻松实现图形排列。

举个例子,

import matplotlib
import seaborn as sns
import patchworklib as pw

penguins = pd.read_csv('./sns_data/penguins.csv')
titanic = pd.read_csv('./sns_data/titanic.csv')
pw.overwrite_axisgrid()  # 使用pw.load_seagorngrid,必须先开启pw.overwrite_axisgrid方法

# 核密度图
g0 = sns.displot(
    penguins,
    x="鳍长 (毫米)",
    kind='kde',
    hue="岛屿",
    fill=True,
    multiple="layer",
    palette=["#006a8e", "#b1283a", "#a8a6a7"],
)

g0 = pw.load_seaborngrid(g0, label="g0")  #每个子图使用使用pw.load_seagorngrid方法

# 分组boxplot
g1 = sns.catplot(data=titanic,
                 x="登船港口",
                 y="年龄",
                 hue="性别",
                 col="船票等级",
                 row="获救情况",
                 width=0.7,
                 linewidth=0.6,
                 kind="box",
                 palette=["#006a8e", "#b1283a"])
g1 = pw.load_seaborngrid(g1, label="g1",
                         figsize=(6, 6))  #每个子图使用使用pw.load_seagorngrid方法

# 边际图
g2 = sns.pairplot(data=penguins,
                  hue="性别",
                  palette=["#006a8e", "#b1283a"],
                  height=1.5,
                  aspect=1,
                  plot_kws=dict(color="#7995c4", alpha=1),
                  diag_kws=dict(color="#7995c4", alpha=1))
g2 = pw.load_seaborngrid(g2, label="g2")

# 矩阵图
g3 = sns.JointGrid(data=penguins,
                   x='喙长 (毫米)',
                   y='喙深 (毫米)',
                   hue='性别',
                   palette=["#006a8e", "#b1283a"])
g3.plot(sns.kdeplot, sns.histplot, alpha=.5, fill=True)

g3 = pw.load_seaborngrid(g3, label="g3")  #每个子图使用使用pw.load_seagorngrid方法

#个性化设置
g0.case.set_title('图 A', x=0, y=1.0, loc="right")
g1.case.set_title('图 B', x=0, y=1.0, loc="right")
g2.case.set_title('图 C', x=0, y=1.0, loc="right")
g3.case.set_title('图 D', x=0, y=1.0, loc="right")

#拼图

patch0123 = (g0 | g1) / (g2 | g3)
patch0123.savefig() #类似plt.show()

看下效果,

Image

patch3210 = (g3 | g2) / (g1 | g0) #换个顺序
patch3210.savefig()
Image

patch3012 = (g3 | g0 | g1 ) / g2 #再换个顺序
patch3012.savefig()
Image
-END-
以上节选自原创Python可视化教程(基于py可视化利器seaborn):530张图形+8000行代码+详细代码注释+后续免费更新+学习交流群,教程部分内容,
Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

Image

每类图表包含详细代码+详细代码注释,多达8000行代码,例如,Image


如何加入学习?

👇加入学习(收费、备注:169)

Image

✅解锁获取6大权限:

  1. 8000+行代码(复制即可运行)
  2. 在线教程文档(清晰目录)
  3. 依赖数据(免费下载)
  4. 交流群
  5. 后续更新
  6. 定期抽最新机器学习、数据科学类书籍