我正在制作一个箭袋情节:
[x,y] = meshgrid(0:0.2:2,0:0.2:2);
u = cos(x).*y;
v = sin(x).*y;
figure
quiver(x,y,u,v)
Run Code Online (Sandbox Code Playgroud)
我希望箭头被填满(即
并不是
)
从文档中,使用它应该非常简单
quiver(...,LineSpec,'filled')
Run Code Online (Sandbox Code Playgroud)
但是,我仍然无法弄清楚正确的语法 - 这些不起作用:
quiver(x,y,u,v,'LineWidth','filled');
quiver(x,y,u,v,'LineWidth',1,'filled');
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
编辑:使用行说明符执行以下操作:
quiver(x,y,u,v) %Original
Run Code Online (Sandbox Code Playgroud)

quiver(x,y,u,v,'-sk','filled') %With line specifiers
Run Code Online (Sandbox Code Playgroud)

我不是MATLAB专业人士,所以如果我的回答笨拙,请原谅。我确信有更优雅的方法可以解决这个问题 - 以下是我发现的方法。
\n\n我决定解决这个问题,检索箭头提示的位置,删除它们并重新绘制它们fill(就像 Deve 建议的那样)。我注意到我可以fill通过插入值来判断一个多边形结束而下一个开始NaN(这也是原始箭头尖端的绘制方式,正如您可以看到检查原始XData)。这样做我失去了影响对象颜色的可能性,并且它们没有\xc2\xb4t被填充。作为一种解决方法,我在循环中绘制了新的箭头提示 - 我知道可能有更好的方法来做到这一点,所以我对任何添加感到高兴。
我使用了您给出的示例,仅将最后一行替换为 \nHANDLE = quiver(x,y,u,v);以获得绘图的句柄。从那时起:
children=get(handle,'children'); % retrieve the plot-children - \n % second element are the arrow tips\n\nXData=get(children(2),'XData'); % retrieve the coordinates of the tips\nYData=get(children(2),'YData');\n\nhold on\ndelete(children(2)) % delete old arrow tips\n\nfor l=1:4:length(XData)-3 % paint new arrow tips, skipping the NaN-values\n ArrowTips((l-1)/4+1)=fill(XData(l:l+2),YData(l:l+2),'r');\nend\nRun Code Online (Sandbox Code Playgroud)\n\n然后,您可以在 ArrowTips 变量中找到箭头提示的句柄。请随意在调用中指定 Edge- 和 Facecolor fill,此处分别为黑色和红色。