如何更改 seaborn 散点图中异常值的颜色?

How to change color of outliers in seaborn scatterplot?

我想通过将异常值换成另一种颜色来识别异常值,这样在去除异常值后,散点图的变化更清晰。

# TotalBsmtSF: Total square feet of basement area

fig = plt.figure(figsize=(16, 8))

ax1 = fig.add_subplot(211)
b = sns.scatterplot(x = 'TotalBsmtSF', y = 'SalePrice', data = df, ax=ax1,)
plt.title ('Total square feet of basement area VS SalePrice (With Outliers)', fontsize=13)
plt.tight_layout()

# Removing houses with total basement area which is more than 3000 square feet
df = df.drop(df[(df['TotalBsmtSF']>3000) & (df['SalePrice']>=160000)].index)
# print(df['TotalBsmtSF'].head(450))
ax2 = fig.add_subplot(212)
b = sns.scatterplot(x = 'TotalBsmtSF', y = 'SalePrice', data = df, ax=ax2,)
plt.title ('Total square feet of basement area VS SalePrice (Outliers Removed)', fontsize=13)
plt.tight_layout()

plt.close(2)
plt.close(3)
plt.tight_layout()

Seaborn 允许您 change the color 基于分类或数字数据的标记。因此,您可以创建一个新列来定义数据点是否为异常值,然后在 seaborn 中调用 hue 参数。这些将是要在您的代码中添加或更改的行

df['outlier'] = np.where(df['TotalBsmtSF']>3000) & (df['SalePrice']>=160000), 'yes', 'no')
b = sns.scatterplot(x = 'TotalBsmtSF', y = 'SalePrice', data = df, ax=ax1, hue="outlier")

我认为这应该可行,但我无法确认,因为我没有可用的数据