有没有一种方法可以使用Seaborn对同一图形使用多个子图?

时间:2020-06-03 20:01:25

标签: pandas matplotlib seaborn

我想在同一图上显示两个图(散点图和条形图),并具有以下布局:

| 0 | 1 | 2 | 3 |

但是第一个图填充0到2,第二个图填充3。我尝试使用fig, ax = plt.subplots(1,4,figsize = (12, 10))创建一个1x4的子图数组,但是当我调用sns.scatterplot(...,ax = ...)时,ax参数只能接受一个子图标签。

在子图调用中还是在ax参数中,是否有一种方法可以绘制宽度为75%的图?

1 个答案:

答案 0 :(得分:2)

这是使用plt.subplots()并通过使用关键字gridspec_kwdict来完成此操作的一种方法,该关键字将字典传递给GridSpec构造函数,该构造函数用于创建放置子图的网格。

import numpy as np
from collections import Counter
import matplotlib.pyplot as plt 

np.random.seed(123)

data = np.random.randint(0, 10, 100)

x, y = zip(*Counter(data).items())

fig, (ax1, ax2) = plt.subplots(1, 2, gridspec_kw={'width_ratios': [3, 1]}, 
                             figsize=(10, 4))

ax1.scatter(x, y)
ax2.bar(x, y)

plt.tight_layout()

enter image description here