具有 loc 条件的 Seaborn 色调

Seaborn hue with loc condition

我面临以下问题:我想用 seaborn 创建一个 lmplot,我想区分颜色不是基于现有列,而是基于条件 寻址到列。

给定以下租金价格预测 df:

area rental price year build ...
40 400 1990 ...
60 840 1995 ...
480 16 1997 ...
... ... ... ...
sns.lmplot(x="area", y="rental price", data=df, hue = df.loc[df['year build'] > 1992])

上面这个不起作用。我知道我可以添加一个表示此条件的列并在“hue”中处理此列,但是没有办法给 seaborn 一个 hue 条件吗?

提前致谢!

您可以添加一个包含布尔信息的新列并将其用于色调。例如 data['at least from eighties'] = data['model_year'] >= 80。这将创建一个图例,其中列名作为标题,FalseTrue 作为文本。如果您将值映射到字符串,这些将出现。这是一个使用 seaborn 的演示数据集之一的示例:

import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset('mpg')
df['decenium'] = (df['model_year'] >= 80).map({False: "seventies", True: "eighties"})

sns.lmplot(x='weight', y='mpg', data=df, hue='decenium')
plt.tight_layout()
plt.show()