在 seaborn 0.11.2 中将色调应用于 PairGrid 的下部或上部

Applying hue to lower or upper part of PairGrid in seaborn 0.11.2

已提供此问题的解决方案 here。但是,对于较新版本的 seaborn (0.11.2),它不起作用,而是生成单一颜色的散点图。

这是之前提出的解决方案:

import matplotlib.pyplot as plt
import seaborn as sns

df = sns.load_dataset("iris", cache=True)

g = sns.PairGrid(df)

g.map_upper(sns.scatterplot)

g.map_diag(sns.kdeplot)

# Now set parameters needed for `hue`
g.hue_vals = df["species"]
g.hue_names = df["species"].unique()
g.palette = sns.color_palette("husl", len(g.hue_names))
# Then map lower
g.map_lower(sns.scatterplot)

plt.show()

产生:

谁能提出适用于 Seaborn 0.11.2 的解决方案?

我想我会这样做

df = sns.load_dataset("iris")
g = sns.PairGrid(df, hue="species")
g.map_upper(sns.scatterplot)
g.map_lower(sns.scatterplot, hue=None)
g.map_diag(sns.kdeplot, hue=None)
g.add_legend()

你可以用另一种方式来做,只在 map_upper 调用中分配 hue。但是要使图例正确就更难了。