Seaborn - 压缩零计数类别的小提琴图

Jim*_*myT 5 python seaborn

在布置小提琴图时,是否有一种简单的方法可以忽略零计数类别。在下面的示例中,没有 'Yes:Red' 和 'No:Green' 的情况,但 violinplot 仍然绘制了“缺失”类别。我可以理解为什么这应该是默认行为,但是有什么方法可以改变色调中使用的因素来抑制它并删除空白?

df = pd.DataFrame(
    {'Success': 50 * ['Yes'] + 50 * ['No'], 
     'Category': 25 * ['Green'] + 25 * ['Blue'] + 25 * ['Green'] + 25 * ['Red'],
     'value': np.random.randint(1, 25, 100)}
)
sns.violinplot(x='Success', y='value', hue='Category', data=df)
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

提前致谢。

err*_*ror 1

这是我在没有像我在评论中建议的那样的特定情况作弊的情况下可以获得的最接近的结果。

您可以将FacetGridin 与sharex = False参数一起使用。然后,您需要该方法并使用对象的正确参数map进行映射。就像这样:violinplotFacetGird

g = sns.FacetGrid(df, col="Success",  sharex=False)
g = g.map(sns.violinplot, 'Category','value')
plt.show()
Run Code Online (Sandbox Code Playgroud)

得到这个图像:

在此输入图像描述

不再有绘制空白图的空白空间。

唯一的缺点是色调参数目前不起作用。我将继续寻找一种以适当方式包含色调的解决方案。用户仍然可以在 x 轴上看到实际的类别。然而这并不理想。

我仍然希望当前形式的答案能够对您有所帮助。