如何更改 seaborn 对图中绘图元素的 z 顺序

Grz*_*ppe 7 python z-order pandas seaborn pairplot

这是一个片段,用于重现我的示例图像:

import pandas as pd
import numpy as np
import seaborn as sns

np.random.seed(42)
df = pd.DataFrame(np.random.rand(10,2), columns=['x', 'y'])
df['label'] = ['cat', 'mouse', 'dog', 'mouse', 'cat', 'cat', 'mouse', 'mouse','dog', 'cat']
sns.pairplot(df, hue='label');
Run Code Online (Sandbox Code Playgroud)

它生成以下seaborn对图,以及一些虚拟数据:

在此输入图像描述

在右上图中,“狗”类别的一个标记位于“鼠标”类别的覆盖标记下方。

我可以以某种方式更改散点图标记的 z 顺序,以便“狗”类别的所有标记在顶部最清晰可见吗?

编辑:我已经尝试过hue_order=['mouse', 'cat', 'dog']hue_order=['dog', 'mouse', 'cat'],但它们只影响图例和颜色中的顺序。不是散点图中标记的 z 顺序。

Joh*_*anC 4

  • 这个答案提供了我在 2022 年 1 月 7 日发表的评论的完整解释。
  • 这些点按照它们在数据框中出现的顺序绘制。您可以更改该顺序,例如通过pd.concat([df[df['label'] != 'dog'], df[df['label'] == 'dog']]).
  • 数据框中的顺序还设置图例中标签的默认顺序。进一步注意,在未来的 seaborn 版本中,这种行为可能会改变。
import pandas as pd
import numpy as np
import seaborn as sns

np.random.seed(42)
df = pd.DataFrame(np.random.rand(10, 2), columns=['x', 'y'])
df['label'] = ['cat', 'mouse', 'dog', 'mouse', 'cat', 'cat', 'mouse', 'mouse', 'dog', 'cat']
sns.pairplot(pd.concat([df[df['label'] != 'dog'], df[df['label'] == 'dog']]), hue='label')
Run Code Online (Sandbox Code Playgroud)

sns.pairplot 改变点的顺序