是否有一种方法只能将色相应用于Seaborn中的PairGrid的下部

时间:2019-02-06 13:36:53

标签: python data-visualization seaborn

我想知道是否可以仅将色相应用于海洋PairGrid的下部。

例如,说我有下图: enter image description here

对于我需要呈现的内容,我想将密度图保留在对角线上,将整体散点图保留在上方(上面印有相关系数,我知道该怎么做),但在下方我想要通过色相将点分开,只是告诉我的观众如果我们对数据进行子集处理会发生什么情况。

我考虑过只是找出鞋帮的相关性,进行色相绘制,只是将鞋帮中的所有标记更改为相同的颜色,但是随后我失去了对角线的密度。

有人知道我的问题是否可能吗?

我正在使用的当前代码是

ff = sns.PairGrid(test2,vars=['OzekePower','Power0','Power1','Power2'],palette="husl") ff.map_upper(sns.scatterplot) ff.map_lower(sns.scatterplot) ff.map_diag(sns.kdeplot)

所以我希望的是 ff.map_lower(sns.scatterplot,hue='species') 但这会产生错误。

编辑-如果我将诊断和上部留空并分别分配给空图,则可以这样做,但这似乎冗长得多。

1 个答案:

答案 0 :(得分:0)

不幸的是,PairGrid没有map_dataframe方法,否则该方法可用于在映射中包括其他数据框列。只能在hue的下部获得PairGrid的一种方法是在hue的创建过程中忽略PairGrid参数,并填充没有色相的网格是理想的。
然后,手动将hue的必需参数手动设置到网格,最后调用map_lower,这将看到网格,就像从一开始就指定了hue

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()

enter image description here