Seaborn violinplot 透明度
Posted
技术标签:
【中文标题】Seaborn violinplot 透明度【英文标题】:Seaborn violinplot transparency 【发布时间】:2020-10-17 05:53:19 【问题描述】:我想在 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])
不会导致所需的输出:
【问题讨论】:
【参考方案1】:发现 this thread 想要更改小提琴图的一般 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, ...]
输出:
【讨论】:
出于某种原因,虽然这个示例在我在提示数据集上尝试时运行良好,但在应用于我的实际数据时却无法运行。我通过在感兴趣的 PolyCollections 上调用 get_facelor 来解决这个问题,更改 alpha 值,然后应用 set_facecolor;它神秘地成功了。【参考方案2】:根据同thread更新。
更简单的答案是:
plt.setp(ax.collections, alpha=.3)
【讨论】:
以上是关于Seaborn violinplot 透明度的主要内容,如果未能解决你的问题,请参考以下文章
seaborn使用violinplot函数可视化水平小提琴图(Make Horizontal Violin Plot with violinplot in Seaborn)
seaborn使用violinplot函数可视化小提琴图并在violinplot函数中设置inner参数来添加数据点显示数据的稠密程度
seaborn violinplot 和 boxplot 并排