这是一个片段,用于重现我的示例图像:
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');
它生成以下seaborn对图,以及一些虚拟数据:
在右上图中,“狗”类别的一个标记位于“鼠标”类别的重叠标记下方。
我可以以某种方式更改散点图标记的 z 顺序,以便“狗”类别的所有标记在顶部最清晰可见吗?
编辑:我已经尝试过
hue_order=['mouse', 'cat', 'dog']
和hue_order=['dog', 'mouse', 'cat']
,但它们只影响图例和颜色中的顺序。不是散点图中标记的 z 顺序。
pd.concat([df[df['label'] != 'dog'], df[df['label'] == 'dog']])
。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')
这些点是按照 @JohanC 在问题评论和其他答案中遇到的顺序绘制的。连接是一种选择,但在大多数情况下,对数据帧进行排序可能有效。
df.sort_values(by=['foo', 'bar'], inplace=True)
如果您希望保留原始数据帧顺序,请从
inplace
函数中删除 sort_values
参数,并将返回的排序数据帧分配给新变量。