我想知道是否可以仅将色相应用于海洋PairGrid
的下部。
对于我需要呈现的内容,我想将密度图保留在对角线上,将整体散点图保留在上方(上面印有相关系数,我知道该怎么做),但在下方我想要通过色相将点分开,只是告诉我的观众如果我们对数据进行子集处理会发生什么情况。
我考虑过只是找出鞋帮的相关性,进行色相绘制,只是将鞋帮中的所有标记更改为相同的颜色,但是随后我失去了对角线的密度。
有人知道我的问题是否可能吗?
我正在使用的当前代码是
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')
但这会产生错误。
编辑-如果我将诊断和上部留空并分别分配给空图,则可以这样做,但这似乎冗长得多。
答案 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()