如何全局设置 matplotlib 图表的透明度值

7

在使用Jupyter Notebooks时,我经常会发现自己不断地写以下内容来改变图表的alpha值:

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

我希望在rcParameters中找到匹配的值,以便全局更改选项,例如:
plt.rcParams['lines.alpha'] = 0.6 #not working

有可能的解决方法是更改所有图表的alpha值。
4个回答

7

很不幸,根据他们的如何条目:

如果您需要所有图形元素都透明,则目前没有全局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)

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


我很担心。我的主要意图是保持代码简短易读,因为它用于笔记本。所以你的解决方案在这种情况下对我帮助不大,因为它还暗示了在绘图命令中反复使用alpha参数。 - Jul3k
我明白,我只是提供了一个替代方案,以便为可能的未来浏览者使答案更完整。我不确定为什么您不能设置它,但是如果您有时间和耐心,您可以随时将其作为愿望提交 - Dimitris Fasarakis Hilliard
是的,感谢您提出如何入口。基于此,我提交了一个功能请求。 - Jul3k
祝你好运。如果他们真的有一个我不知道的好解决方案,请确保回来将其作为您的解决方案发布。 :-) - Dimitris Fasarakis Hilliard

2

在 matplotlib 团队的帮助下,我回答了自己的问题。以下代码可以通过全局更改线条颜色的透明度值来完成任务:

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
设置 alpha 值的能力也已经添加到版本 2.1 的愿望清单中。

他们的回复速度比我想象的还要快! - Dimitris Fasarakis Hilliard

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)

0

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

注意你的循环顺序,因为上面的顺序将循环颜色,然后是线条,最后是透明度。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接