Python Seaborn violinplot透明度

Python Seaborn violinplot透明度,python,seaborn,violin-plot,Python,Seaborn,Violin Plot,我希望在seaborn.violinplot中有越来越透明的小提琴。我尝试了以下方法: import seaborn as sns tips = sns.load_dataset("tips") ax = sns.violinplot(x="day", y="total_bill", data=tips, color='r', alpha=[0.8, 0.6, 0.4, 0.2]) 哪个不产生所需的输出: 要更改小提琴图的alph

我希望在seaborn.violinplot中有越来越透明的小提琴。我尝试了以下方法:

import seaborn as sns

tips = sns.load_dataset("tips")

ax = sns.violinplot(x="day", y="total_bill", data=tips, color='r', alpha=[0.8, 0.6, 0.4, 0.2])
哪个产生所需的输出:

要更改小提琴图的alpha值,似乎需要从ax访问matplotlib.polycollections才能设置alpha值,但由于您需要以任何方式访问它们,因此最好单独设置alpha值(至少在您的情况下,因为您需要单独的alpha值)

据我所知,ax.collections同时包含matplotlib.PolyCollections和matplotlib.PathCollections,您只需要这些PolyCollections,因此我做了以下操作,看起来效果不错:

ax = sns.violinplot(x = 'day', y = 'total_bill', data = tips, color = 'r')
for violin, alpha in zip(ax.collections[::2], [0.8,0.6,0.4,0.2]):
    violin.set_alpha(alpha)
ax.collections[::2]忽略PathCollections,因为ax.collections的格式为[PolyCollection1,PathCollection1,PolyCollection2,PathCollection2,…]

输出:


出于某种原因,虽然我在tips数据集上尝试此示例时效果很好,但应用于实际数据时却不起作用。我通过在感兴趣的多个集合上调用get_facelor,更改alpha值,然后应用set_facecolor来解决这个问题;它神秘地成功了。