num_features = len(train_df.columns)
fig,ax = plt.subplots(num_features, num_features, figsize=(10,10))
for i in train_df.columns:
for j in train_df.columns:
if i==j: # diagonal
sns.distplot(train_df[0], kde=False, ax=ax[i][j])
else: # off diagonal
sns.scatterplot(x=train_df[i],y=train_df[j],
ax=ax[i][j], hue=target_df, palette='BrBG',
legend=False)
num_feats = len(train_df.columns)
fig, ax = plt.subplots(num_feats, num_feats, figsize=(10,10))
# In order to assign the plots to the correct axes,
# create a dictionary to refer the column names to integers.
col_dict = dict(zip(train_df.columns, range(len(train_df.columns))))
for col_i in train_df.columns:
i = col_dict[col_i]
for col_j in train_df.columns:
j = col_dict[col_j]
if col_i==col_j:
sns.histplot(train_df[col_i], kde=False, ax=ax[i,j])
else:
sns.scatterplot(x=train_df[col_i], y=train_df[col_j], ax=ax[i,j], hue=target_df, legend=False)
fig.tight_layout() # make room for subplot labels
4条答案
按热度按时间frebpwbc1#
pairplot
(也就是底层的PairGrid
)现在将hue
委托给Map函数(如果它支持的话)。你可能不想为每个价格绘制一个不同的边际密度,但是:旧答案,用于演示
PairGrid
的更灵活使用:这可能比现在更容易,但没有必要自己重新创建
PairGrid
。rxztt3cl2#
您可以将
target_df
指定为train_df
中的一列,并将其作为hue
传递:但是,如果您的
target
是连续的,这将非常慢。相反,你可以执行一个双for
循环:它给你这样的东西:
ymdaylpp3#
我的声望太低了,不能发表评论,所以我必须提供一个单独的答案。我在两个方面修改了选择的答案(Quang Hoang)。
首先,如果列的名称不是与子图网格对应的整数,那么您需要区分传递给
train_df[i]
的列的索引(这里是i
和j
)和传递给ax=ax[i,j]
的子图的索引。其次,seaborn的
distplot
已被弃用,因此将其切换到histplot
。waxmsbnn4#
在文档(https://seaborn.pydata.org/generated/seaborn.pairplot.html)中,你可以看到,你只需要在调用函数时设置
palette = my_palette
,就像这样:sns.pairplot(train_df, palette = my_palette)