Seaborn 小提琴图透明度

Seaborn violinplot transparency

我希望 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])

哪个 不会 导致所需的输出:

发现 this thread 希望更改小提琴图的 alpha 值,看来您需要从斧头访问 matplotlib.PolyColections 才能设置 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] 忽略路径集合,因为 ax.collections 的格式为 [PolyCollection1, PathCollection1, PolyCollection2, PathCollection2, ...]

输出:

thread更新。

更简单的答案是:

plt.setp(ax.collections, alpha=.3)