【问题标题】:Seaborn violinplot transparencySeaborn violinplot 透明度
【发布时间】: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])

会导致所需的输出:

【问题讨论】:

    标签: python seaborn violin-plot


    【解决方案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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-29
      • 2020-04-10
      • 1970-01-01
      • 2018-04-22
      • 2016-01-05
      • 2021-06-25
      • 2022-01-23
      • 2021-04-20
      相关资源
      最近更新 更多