在使用Jupyter Notebooks时,我经常会发现自己不断地写以下内容来改变图表的alpha值:
plot(x,y1, alpha=.6)
plot(x,y2, alpha=.6)
...
我希望在rcParameters中找到匹配的值,以便全局更改选项,例如:
plt.rcParams['lines.alpha'] = 0.6 #not working
有可能的解决方法是更改所有图表的alpha值。
在使用Jupyter Notebooks时,我经常会发现自己不断地写以下内容来改变图表的alpha值:
plot(x,y1, alpha=.6)
plot(x,y2, alpha=.6)
...
plt.rcParams['lines.alpha'] = 0.6 #not working
很不幸,根据他们的如何条目:
如果您需要所有图形元素都透明,则目前没有全局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)
这通常有助于保持配置分离和易于更新。
在 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)
color_cycle
将被弃用并替换为 prop_cycle
。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)
注意你的循环顺序,因为上面的顺序将循环颜色,然后是线条,最后是透明度。