如何全局设置 matplotlib 图的 alpha 值

How to set the alpha value for matplotlib plots globally

使用 Jupyther 笔记本,我经常发现自己重复编写以下内容来更改绘图的 alpha 值:

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

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

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

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

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

If you need all the figure elements to be transparent, there is currently no global alpha setting, but you can set the alpha channel on individual elements.

因此,通过 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)

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

在 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 的愿望清单中

更新版本(可能更清洁):

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)

另一种方法是指定 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。