python – Seaborn – 为零计数类别压缩小提琴图

在布置小提琴图时,是否有一种简单的方法可以忽略零计数类别.在下面的示例中,没有“是:红色”和“否:绿色”的情况,但小提琴图仍然会绘制“缺失”类别.我可以看到为什么这应该是默认行为,但有没有办法改变色调中使用的因子来抑制它并删除空格?

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()

python  –  Seaborn  – 为零计数类别压缩小提琴图

提前致谢.

解决方法:

这是我能在没有特定情况特定作弊的情况下得到的,就像我在评论中所建议的那样.

您可以将facetGrid与sharex = False参数一起使用.然后你需要map方法并使用适当的FacetGird对象参数映射violinplot.像这样:

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

导致此图像:

python  –  Seaborn  – 为零计数类别压缩小提琴图

没有更多的空白空间绘制空图.

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

我仍然希望它当前形式的答案对你有帮助.

上一篇:python – 如何在不同Y轴的相同seaborn图中制作条形图和线图?


下一篇:python – Seaborn OS X:seaborn.pairplot()ValueError:’transform’必须是’matplotlib.transform.Transform’的