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

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

粉丝问题提出

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

fb343afed50847ab85fc3523f6c4304d.png

04e16e646ce644e9a900d3791b773fb8.png

 01e210c7b9174d9fa93562c278d39d1a.png

2094cacd00c64d8d8de180f9e7d92839.png 


粉丝问题解决

通过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()

看下效果,

11374df692a849b192965e7c0ad8903e.png 

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

2c7f7ba89d2d42d7963156c7e9e15d14.png 

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

38dd0fed9d9644388740a8e9dea947ef.png


 ❤️❤️分享一份原创“Python保姆级可视化教程”:12.3万字+530张图形+8000行代码+详细代码注释+学习交流群👉👉这个工具缓解了我的可视化焦虑

a49750a098392cac9cb0015ecad40342.gif

 

 

  • 24
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_21478261

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值