如何将seaborn轴添加到带有子图的matplotlib图形中?

Vin*_*nay 3 python matplotlib seaborn

我有一个返回seaborn 情节的函数。我想通过循环将多个seaborn图添加到一个图形中。我在这里找到了 matplotlib 的答案,但不知道如何将其应用于 seaborn。

import pandas as pd
import numpy as np
import seaborn as sns
from matplotlib import pyplot as plt

def plotf(df_x):
    g = sns.lineplot(data=df_x[['2016','2017','2018']])
    g.set_xticks(range(0,12))
    g.set_xticklabels(['Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec','Jan'])
    return g

df = pd.DataFrame({'Period': list(range(1,13)),
                           '2016': np.random.randint(low=1, high=100, size=12),
                           '2017': np.random.randint(low=1, high=100, size=12),
                           '2018': np.random.randint(low=1, high=100, size=12)}) 

fig, ax = plt.subplots(nrows=3)
Run Code Online (Sandbox Code Playgroud)

我想看 3 个地块ax[0], ax[1], ax[2]

Gio*_*Gio 5

您只需将要绘制的轴指定为函数的输入,并在 sns.lineplot 中显式指定要在哪个轴上绘制

import pandas as pd
import numpy as np
import seaborn as sns
from matplotlib import pyplot as plt

def plotf(df_x,ax):
    g = sns.lineplot(data=df_x[['2016','2017','2018']],ax=ax)
    g.set_xticks(range(0,12))
    g.set_xticklabels(['Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec','Jan'])
    return g

df = pd.DataFrame({'Period': list(range(1,13)),
                           '2016': np.random.randint(low=1, high=100, size=12),
                           '2017': np.random.randint(low=1, high=100, size=12),
                           '2018': np.random.randint(low=1, high=100, size=12)}) 

fig, ax = plt.subplots(nrows=3)
plotf(df,ax[0])
plotf(df,ax[1])
plotf(df,ax[2])

Run Code Online (Sandbox Code Playgroud)

输出