如何在Facetgrid中一起绘制20个不同的散点子图-Python(Seaborn)

时间:2019-12-29 20:34:32

标签: python seaborn

我已经在facetgrid中看到了多个其他用于海底子图的线程,但是没有针对我的特定情况。

我有20列用于存储数据。我想使用seaborn在5行乘4矩阵FacetGrid中绘制每个变量与变量'SalePrice'的关系。

这是我选择的列的列表,它们具有一个称为“ train_df”的当前数据框。

NODE_ENV

我真的不知道该怎么做,我所看到的每个示例都不包含绘制每列与其中一列的问题。谢谢。也可以将rpy2库用于ggplots

1 个答案:

答案 0 :(得分:0)

我认为没有一种方法可以使用seaborn来获得您要获得的准确结果。您可以获得的最接近的结果是使用pairplot(),但您将获得一行包含20列的轴

g = sns.pairplot(data=df,
                 x_vars=['1stFlrSF', '2ndFlrSF', 'Fireplaces', 'FullBath', 'GarageArea', 'GarageCars', 
'GarageYrBlt', 'GrLivArea', 'HalfBath', 'Id', 'LotArea', 'LotFrontage', 'MasVnrArea', 'OpenPorchSF', 
'OverallQual', 'TotalBsmtSF', 'TotRmsAbvGrd', 'WoodDeckSF', 'YearBuilt', 'YearRemodAdd'],
                 y_vars=['SalePrice'])

如果您直接使用matplotlib,则可以轻松获得期望的结果

fig, axs = plt.subplots(4,5, sharey=True)
for ax,col in zip(axs.flat, ['1stFlrSF', '2ndFlrSF', 'Fireplaces', 'FullBath', 'GarageArea', 'GarageCars', 
'GarageYrBlt', 'GrLivArea', 'HalfBath', 'Id', 'LotArea', 'LotFrontage', 'MasVnrArea', 'OpenPorchSF', 
'OverallQual', 'TotalBsmtSF', 'TotRmsAbvGrd', 'WoodDeckSF', 'YearBuilt', 'YearRemodAdd']):
    ax.scatter(df[col],df['SalePrice'])
    ax.set_xlabel(col)
    if ax.is_first_col():
        ax.set_ylabel('SalePrice')
fig.tight_layout()