簡體   English   中英

如何在多個子圖中 plot seaborn lmplots

[英]How to plot seaborn lmplots in multiple subplots

我試圖在同一圖中 plot 多個lmplots 但是我得到了太多不需要的子圖。

我找到了另一個 SO 鏈接How to plot 2 seaborn lmplots 並排? 但這也沒有幫助我。

在這個例子中,我想要 1 行 2 列。

MWE

# imports
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# data
df = sns.load_dataset('titanic')

# plot
m,n = 1,2
figsize=(12,8)
cols1 = ['age','fare']
cols2 = ['fare','age']
target = 'survived'
fontsize = 12

fig, ax = plt.subplots(m,n,figsize=figsize)
for i, (col1,col2) in enumerate(zip(cols1,cols2)):
    plt.subplot(m,n,i+1)

    sns.lmplot(x=col1,y=col2,data=df,
           hue=target, palette='Set1',
           scatter_kws={'alpha':0.3})

    plt.xlabel(col1,fontsize=fontsize)
    plt.ylabel(col2,fontsize=fontsize)

    plt.tick_params(axis='both', which='major', labelsize=fontsize)
    plt.tight_layout()

for i in range(m*n-len(cols1)):
    ax.flat[-(i+1)].set_visible(False)

到目前為止我的嘗試:

df = pd.DataFrame({'x0':[10,20,30,40],
                   'y0': [100,200,300,400],
                   'x1':[0.1,0.2,0.3,0.1],
                   'y1':[0.01,0.02,0.03,0.01],
                   'target': [0,1,1,1]
                   })

df1 = df.append(df)
df1 = df1.reset_index(drop=True)
df1['x0'].iloc[len(df):] = df['x1'].to_numpy()
df1['y0'].iloc[len(df):] = df['y1'].to_numpy()
df1['col'] = ['c0']* len(df) + ['c1'] * len(df)
df1 = df1.drop(['x1','y1'],axis=1)
df1 = df1.rename(columns={'x0':'x','y0':'y'})

sns.lmplot(x='x',y='y',hue='target',data=df1,col='col')

Output: 在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM