pandas 如何在Seborn中改变pairplot的“形状”?

qaxu7uf2  于 2022-12-10  发布在  其他
关注(0)|答案(2)|浏览(115)

我绘制了这个配对图,只将一个特征与所有其他特征相关联,我怎样才能更好地可视化它呢?我需要可视化4列。在配对图的官方文档中,我找不到这个选项。
这是df:

下面是代码的一部分:

sns.pairplot(data=dftrain,
              y_vars=['medv'],
              x_vars=dftrain.columns[:-1])

情节是这样的:

fd3cxomn

fd3cxomn1#

pairplot的形状不能改变。但是,如果你将 Dataframe 转换成长格式,你可以创建一个类似的relplot
下面是一些简单的示例代码,从虚拟数据开始:

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

df = pd.DataFrame(np.random.rand(300, 14), columns=[*"abcdefghijklmn"])
df_long = df.melt(id_vars=df.columns[-1], value_vars=df.columns[:-1])

g = sns.relplot(df_long, x=df.columns[-1], y='value', col='variable', col_wrap=4, height=2)

xwbd5t1u

xwbd5t1u2#

您可以使用seaborn.FacetGrid并设定参数col_wrap的值。
col_wrap(整数):以此宽度“换行”列变量,以便列方面跨越多行。与行方面不兼容。
试试这个:

cols= dftrain.columns[:-1].tolist()

g = sns.FacetGrid(pd.DataFrame(cols), col=0, col_wrap=3, sharex=False)

for ax, varx in zip(g.axes, cols):
    sns.scatterplot(data=dftrain, x=varx, y="medv", ax=ax)
    
g.tight_layout()
#输出:

相关问题