我有 8 个类别,并且我已经使用 sns.catplot 绘制了分类散点图。有没有办法突出显示每个类别中的特定观察结果,以将位置与其他观察结果进行比较?
您可以使用文本注释,对
annotate
返回的 ax
对象的 matplotlib.axes.Axes
(FaceGrid
) 属性使用 seaborn.catplot
方法。例如,下面的代码通过在数据框中使用布尔选择来注释正常样本上大于 0.5 的观测值,df[df.y > .5]
,并且 df.apply(...)
将注释所有点。
import pandas as pd
import numpy as np
import seaborn as sns
df = pd.DataFrame(data={'x': range(10), 'y':np.random.normal(0,1,size=10)})
df['odd'] = df.x.apply(lambda x: x % 2)
g = sns.catplot(data=df, x='x', y='y', hue='odd')
df[df.y > .5].apply(lambda p: g.ax.annotate(f'({p.x}, {round(p.y, 2)})', (p.x, p.y)), axis=1)
您可以在
annotate
方法这里查看更多详细信息。