如何更新Matplotlib中的streamplot颜色?

Cha*_*net 3 python matplotlib

如果有一个streamplot:

c = streamplot(X, Y, U, V, color=(0,0,0,1))
Run Code Online (Sandbox Code Playgroud)

现在,我想隐藏它:

c.lines.set_alpha(0)
c.arrows.set_alpha(0)
draw()
Run Code Online (Sandbox Code Playgroud)

线条消失,但不是箭头.为什么?如何更改箭头的alpha值?('我正在使用qt4agg后端).

cge*_*cge 5

那是......很奇怪.据我所知,对c.arrows所做的任何事情实际上并没有改变任何箭头:c.arrows.set_visible(False)也没有做任何事情.Qt4Agg和iPython Inline后端都是这种情况.

一种解决方案是直接在每个箭头上设置alpha/visibility.例如,您可以执行以下操作:

for x in gca().get_children():
    if type(x)==matplotlib.patches.FancyArrowPatch:
        x.set_alpha(0) # or x.set_visible(False)
draw()
Run Code Online (Sandbox Code Playgroud)

您可能希望用特定轴替换gca().

这根本不是理想的,我假设涉及某种bug.我将不得不更仔细地研究它.


编辑:

所以,这里有一些东西.从本质上讲,c.arrowsPatchCollection完全没用,我可以说:

  • streamplot在streamplot.py中,根本不会将c.arrowsPatchCollection 添加到轴.相反,它直接添加FancyArrowPatches.
  • 即使它确实如此,PatchCollection也无法与FancyArrowPatch一起使用.
  • 应该有一个关于此的问题,但显然从未完成.如果我有机会,我可能会继续努力.

至少,文档应该明确说明这c.arrows不是一个真正的集合,而是看起来是一个虚假的,无用的对象意味着未来的兼容性.