我在网格中有一些数据,我用streamplot绘制流线图,颜色和宽度与速度有关。如何更改箭头的颜色,或仅更改边缘颜色? 我的目标是强调流方向。如果有人有另一种方法可以做到这一点..
我尝试使用c.arrows
,编辑c.arrows.set_edgecolor
,c.arrows.set_edgecolors
,c.arrows.set_facecolor
和c.arrows.set_facecolors
,但即使我跑{{1}也没有发生任何事情}}
图:
代码:
plt.draw()
答案 0 :(得分:3)
(注意,下面的分析可能不完全正确,我只是粗略地看一下来源。)
似乎streamplot
在创建箭头时会做两件事:
FancyArrowPatch
)添加到轴PatchCollection
(c.arrows
)出于某种原因(我猜这个正确的缩放是在这背后),似乎没有使用该集合,也没有添加到轴上。因此,如果更改集合的颜色映射或颜色,则它对绘图没有影响。
可能有更美妙的方法可以做到这一点,但如果你想要,例如,黑色箭头进入你的情节,你可以这样做:
import matplotlib.patches
# get the axes (note that you should actually capture this when creating the subplot)
ax = plt.gca()
# iterate through the children of ax
for art in ax.get_children():
# we are only interested in FancyArrowPatches
if not isinstance(art, matplotlib.patches.FancyArrowPatch):
continue
# remove the edge, fill with black
art.set_edgecolor([0, 0, 0, 0])
art.set_facecolor([0, 0, 0, 1])
# make it bigger
art.set_mutation_scale(30)
# move the arrow head to the front
art.set_zorder(10)
这会创建:
然后是通常的警告:这是丑陋和脆弱的。