【发布时间】:2014-04-07 11:50:05
【问题描述】:
我正在制作quiver plot:
[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)
我希望填充箭头(即 而不是 )
从文档来看,使用
应该很简单quiver(...,LineSpec,'filled')
但是,我仍然无法找出正确的语法 - 这些不起作用:
quiver(x,y,u,v,'LineWidth','filled');
quiver(x,y,u,v,'LineWidth',1,'filled');
感谢您的帮助!
edit : 使用行说明符执行以下操作:
quiver(x,y,u,v) %Original
quiver(x,y,u,v,'-sk','filled') %With line specifiers
【问题讨论】:
-
LineSpec一般为字符串如
'-k'为黑线,'filled'为可指定的点标记。例如'-sk',它给出了正方形,但是这些将替换箭袋中的箭头。要修改箭袋,我建议您查看this previous question。 -
@RTL :感谢其他问题的参考,这确实很有帮助,但我认为(如文档所建议的那样)应该有一种更简单的方法来做到这一点。关于 LineSpec,这是一个很好的方向,但说明符一般不包括所有常规规格,特别是:“quiver(x,y,u,v,'Linestyle','-sk')" 似乎不是有效的语法。
-
尝试
quiver(x,y,u,v,'-sk')不需要'linestyle'。恐怕我不知道更简单的方法...(值得与quiver(x,y,u,v,'-sk','filled')比较,看看填充的效果) -
您的要求并不容易实现,因为 Matlab 会在箭袋图中构造从到线对象的每个箭头:一个用于尾部,一个用于头部。因此,箭头的样式不能像
annotation('arrow',...)那样改变。一种可能的方法是使用fill(...)将每个箭头线对象替换为多边形。