【问题标题】:How to set the alpha value for matplotlib plots globally如何在全局范围内设置 matplotlib 绘图的 alpha 值
【发布时间】:2015-12-21 19:42:19
【问题描述】:

使用 Jupyther Notebooks 我经常发现自己反复编写以下内容来更改绘图的 alpha 值:

plot(x,y1, alpha=.6)
plot(x,y2, alpha=.6)
...

我希望在 rcParameters 中找到一个匹配值以更改为全局选项,例如:

plt.rcParams['lines.alpha'] = 0.6 #not working

更改所有绘图的 alpha 值的可能解决方法是什么?

【问题讨论】:

    标签: python matplotlib plot alpha


    【解决方案1】:

    不幸的是,根据他们的How to 条目:

    如果您需要所有图形元素都是透明的,目前没有全局 alpha 设置,但您可以在单个元素上设置 alpha 通道。

    因此,通过 matplotlib 目前无法做到这一点


    我通常为全局值做的是定义一个外部配置文件,定义值并将它们导入到适当的脚本中。

    my_conf.py

    # Parameters:
    
    # matplotlib alpha
    ALPHA = .6
    

    my_plots.py

    import conf.py as CONF
    
    plot(x,y1, alpha=CONF.ALPHA)
    plot(x,y2, alpha=CONF.ALPHA)
    

    这通常有助于保持配置分离且易于更新。

    【讨论】:

    • 我很害怕。我的主要目的是保持代码简短易读,因为它在笔记本中使用。所以你的解决方案在这种情况下对我没有多大帮助,因为它也意味着在 plot 命令中重复使用 alpha 参数
    • 我明白了,我只是提供了一个替代方案,以便为可能的未来流浪者提供更完整的答案。我不知道你为什么不能设置它,但是,如果你有时间耐心,你总是可以submit it作为愿望
    • 是的,感谢您提出 HowTo 条目。基于此,我提交了feature request
    • 祝你好运。如果他们确实有一个很好的解决方法(我不知道),请务必回来并将其作为您的解决方案发布。 :-)
    【解决方案2】:

    在 matplotlib 团队的帮助下回答我自己的问题,以下代码将通过全局更改线条颜色的 alpha 值来完成这项工作:

    alpha = 0.6
    to_rgba = matplotlib.colors.ColorConverter().to_rgba
    
    for i, col in enumerate(plt.rcParams['axes.color_cycle']):
        plt.rcParams['axes.color_cycle'][i] = to_rgba(col, alpha)
    

    注意:在 matplotlib 1.5 中,color_cycle 将被弃用并替换为 prop_cycle

    在 rcParams 上设置 alpha 值的功能也已添加到 2.1 版的愿望清单中

    【讨论】:

    • 他们回复的速度比我想象的要快!
    【解决方案3】:

    更新版本(也许更清洁):

    from cycler import cycler
    alpha = 0.5
    to_rgba = matplotlib.colors.ColorConverter().to_rgba#
    color_list=[]
    for i, col in enumerate(plt.rcParams['axes.prop_cycle']):
        color_list.append(to_rgba(col['color'], alpha))
    plt.rcParams['axes.prop_cycle'] = cycler(color=color_list)
    

    【讨论】:

      【解决方案4】:

      另一种方法是指定 alpha 并将其传递给 rcParams

          plt.rcParams['axes.prop_cycle'] = cycler(alpha=[0.5])
      

      请记住,这可以与任何其他循环属性(例如颜色和线条样式)结合使用。

          cyc_color = cycler(color=['r','b','g')
          cyc_lines = cycler(linestyle=['-', '--', ':'])
          cyc_alpha = cycler(alpha=[0.5, 0.3])
          cyc = (cyc_alpha * cyc_lines * cyc_color)
      

      注意循环器的顺序,因为上面的顺序会循环显示颜色,然后是线条,然后是 alpha。

      【讨论】:

        猜你喜欢
        • 2010-10-21
        • 1970-01-01
        • 2021-06-19
        • 2017-08-01
        • 2022-08-24
        • 1970-01-01
        • 2015-03-22
        • 1970-01-01
        • 2022-01-27
        相关资源
        最近更新 更多