编者按:这个文件被选为MATLAB中心本周精选
ARROW3(P1,P2)用方向箭头绘制从P1到P2的线。P1和P2是nx2或nx3矩阵。P1的每一行都是起始点,P2的每一行都是终点。
ARROW3(P1,P2,S,W,H,IP,ALPHA,BETA)可用于指定线、初始点标记和箭头的属性。在命令提示符处输入“help arrow3”获取更多信息
版本5的新功能:
所有箭头和初始点标记的大小(W、H和IP)都是相对于PlotBox对角线的。
版本5试图保留现有轴的外观。特别是,ARROW3不会改变XYZLim、View或CameraViewAngle。然而,ARROW3不支持从拉伸到填充的缩放。万博1manbetx如果需要特定的宽高比或变量限制,请在调用ARROW3之前使用DASPECT、PBASPECT、AXIS或XYZLIM命令。鼓励用户直接向作者报告问题。
汤姆·戴维斯(2020)。箭头3(//www.tianjin-qmedu.com/matlabcentral/fileexchange/14056-arrow3), MATLAB中央文件交换。检索.
5.18 | 删除不推荐使用的zbuffer渲染器 |
|
5.17.1 | 对2019b ColorOrder问题的临时修复;更多的遵循 |
|
5.17 | 不恢复已存在的ColorOrder属性 |
|
5.16 | 使用显式EdgeColor |
|
1.15.0.0 | 使用appdata而不是userdata |
|
1.14.0.0 | 使用appdata而不是userdata |
|
1.10.0.0 | 纠正DOCTYPE |
|
1.9.0.0 | 改进了文件交换查看器中的html外观 |
|
1.8.0.0 | 更新HTML文件和添加动画示例 |
|
1.3.0.0 | 更新HTML文件和添加动画示例 |
|
1.2.0.0 | 纠正拼写错误 |
|
1.0.0.0 | 修订的html文件 |
|
更新联系信息 |
||
零大小错误修复 |
||
改变了截图 |
||
增加了锥体绘图选项 |
||
忽略zero-magnitude输入 |
||
新的截图 |
||
修订的html文件 |
||
修改命名颜色以匹配Simulink颜色万博1manbetx |
||
修改命名颜色以匹配默认的ColorOrder |
||
添加示例引用;空输入检查 |
||
添加示例引用;空输入检查 |
||
简化示例10 |
||
修正例2 |
||
更多的例子 |
||
更多的例子 |
||
数量级着色和文件修订 |
||
对话框修改 |
||
添加的对话框 |
||
添加的对话框 |
||
改进的代码度量 |
汤姆·戴维斯(查看配置文件)
你好,卡梅隆--
您能通过我的MATLAB配置文件联系我,并包括您的数据和示例脚本吗?谢谢。
卡梅伦Kratt(查看配置文件)
你好汤姆,
我有一个问题,添加图例与箭头从箭头3。图例将直线和箭头作为一个实体,因此由于我绘制了三个箭头,图例中有6个条目。三条是规则线,三条是较厚的块。有办法解决这个问题吗?
谢谢
Taco Broerse(查看配置文件)
你好汤姆,
我再一次。我偶然发现了一些其他内容(又是2D)。我发现箭头的线条覆盖了箭头的尖端。所以这个箭头不是尖锐的,但是有一个线头。我通过减少行长来解决这个问题,这取决于箭头的长度(修改代码)。
问候
汤姆·戴维斯(查看配置文件)
你好,塔可——
你的第一条评论不会出现在评论和评分中。我在这里重复一下,以供参考。
“不错的功能。我偶然发现了一些我不完全理解的东西。当在2D中使用时,我让其他线(在arrow3之前绘制)覆盖箭头(不完全,但只是箭头的一半)。我没有接触alpha值。你知道接下来会发生什么吗?”
5.17指定的渲染器,Zbuffer,用于没有显式z坐标的绘图。
“[Zbuffer]只渲染那些在场景中可见的像素(从而消除了从前到后的排序错误)。”
但是Zbuffer现在已被弃用,并且Arrow3 5.18对所有的图使用Opengl渲染器。
OpenGL渲染器按照从前到后的顺序显示对象,就像在监视器上看到的那样。当在显示器平面上的同一位置时,线条总是画在面孔的前面。”
所以你的解决方案(“当添加一个正z坐标时,这个问题似乎就解决了。”)是一个很好的解决方案。
-------------------------------------------------
你好,川--
参见2020年6月19日来自Taco的评论。下面的代码一致地在黑点上绘制红点。注意,arrow3是最后调用的。
数字
P = 2*[rand(15,1), rand(15,1)];
Plot (p(:, 1), p(:, 2), 'k。”、“MarkerSize”,15)
等一下
Plot3 (p(1:10, 1), p(1:10, 2), ones(10,1), 'r。”、“MarkerSize”,30)
Arrow3 (p(1,1:2), p(2,1:2), '-b2', 2,3)
推迟
Taco Broerse(查看配置文件)
当添加一个正z坐标时,这个问题似乎就解决了。
汤姆·戴维斯(查看配置文件)
你好,临江——
下面假设z1 (size)是圆锥的宽度。通过EdgeColor (z3),你可能是指在2D的圆锥轮廓,但箭头3圆锥总是3D表面21(0:20)面。因此,轮廓不能用EdgeColor实现。这段代码生成一个圆锥图,响应颜色图的变化:
p1=p(:,1:2);
标题=π* p (:, 3) / 180;
P2 = [sin(heading), cos(heading)];
h = arrow3 (p1, p2, [], p(:, 4),[],“锥”);
%将true CData更改为colormap值。
c = p (: 5);
对于n=1:长度(c)
集合(h(n),'CData',c(n)*个(2,21))
结束
caxis(汽车)
汤姆·戴维斯(查看配置文件)
你好,佩德罗,
如上面的概述所述,“如果需要特定的宽高比或变量限制,请在调用ARROW3之前使用DASPECT、PBASPECT、AXIS或XYZLIM命令。”这样做的原因是,ARROW3绘制的曲面看起来像右圆锥体和球体,无论长宽比是什么,但比例必须是固定的,改变这个比例将扭曲曲面。
佩德罗Busc(查看配置文件)
由于某些原因,arrow3的接缝修复了轴的限制。
赵川(查看配置文件)
大家好,我已经使用arrow3很长时间了,当我在MatlabR2014B和r2017b中使用它时,它还可以,没有问题。然而,当我在r2019b中使用相同的代码时,结果与以前不同,这是错误的。例如
图,plot(p(:, 1), p(:, 2), 'k。”、“MarkerSize”,15);axis equal, hold on,
arrow3 (p(1:2)、p (1:2), b5, 0.2, 0.3),等等,
Plot (p(1:10, 1), p(1:10, 2), r。”、“MarkerSize”,20);
虽然第二个图中的点大小大于第一个图中的点大小,但第二个图中设置的红色无法覆盖黑点。
家珍愣(查看配置文件)
李临江(查看配置文件)
你好,汤姆
我们希望用彩图来画圆锥。你有这方面的例子吗?例子2和例子6一起工作(https://public.brain.mpg.de/Laurent/SheinIdelsonetal2017/NSKToolbox/GraphicsPlotting/arrow3/arrow3_examples.html).例如,我们有5行数据:x,y,方向角,z1,z2。
X和y表示坐标,方向角表示方向,z1表示大小,z2表示颜色,应该使用colormap。(如果我们有额外的raw z3来控制EdgeColor会更好)你能帮我吗,以下是我们的数据:
115.700 21.600 111.415 1.051 0.892
116.600 22.800 74.331 0.848 0.151
115.300 23.100 49.346 0.826 0.133
114.400 23.000 16.858 0.798 0.168
116.400 21.000 118.786 0.501 0.274
116.500 22.000 94.239 0.502 0.245
116.700 22.900 72.636 0.509 -0.198
115.300 20.100 152.103 1.247 0.249
113.900 20.200 186.223 1.244 0.412
112.700 20.500 218.671 1.244 0.359
112.000 21.000 239.609 1.237 0.119
115.300 20.100 152.103 1.298 0.947
114.100 20.300 180.858 1.278 0.865
113.100 20.400 208.520 1.253 0.561
112.400 20.300 220.937 1.228 0.285
114.300 19.700 176.306 1.056 0.514
114.100 20.400 180.905 1.050 0.547
113.700 21.200 202.261 1.047 0.804
113.200 22.100 264.870 1.048 0.504
112.900 22.500 285.943 1.043 0.348
伊斯兰教困难问题(查看配置文件)
易添添(查看配置文件)
汤姆·戴维斯(查看配置文件)
你好,艾伦。
正如上面概述所述,与PLOT3一致,“P1和P2是nx2或nx3矩阵。P1的每一行都是起始点,P2的每一行都是终点如果列向量更方便,可以进行转置,例如arrow3([0;0;0]',[1;1;1]')。
艾伦•彼得斯(查看配置文件)
这只在开始向量和结束向量是行(1x3)的情况下有效。给定两个列向量,它返回'无效输入,输入HELP ARROW3的用法示例'
汤姆·戴维斯(查看配置文件)
你好,克里斯,
版本5.17没有充分解决行颜色问题。我将发布一个临时补丁,希望它能满足大多数需求,但代码仍然有很多问题。Arrow3大量使用了ColorOrder属性,该属性在2019b年发生了根本性的变化。
克里斯·詹宁斯(查看配置文件)
我已经使用arrow3有一段时间了,但是突然我不能控制线的颜色了。例如:
箭头3(轴架,轴头,'l-',0.6)
以前箭头是浅灰色的,但现在是蓝色的。
(我的旧脚本也会这样,它们以前工作得很好)
我正在使用Matlab2019b
还有其他人经历过这种情况吗?
基督教的克罗(查看配置文件)
汤姆·戴维斯(查看配置文件)
你好,李--
最可能的问题是最后一行代码的位置。从上面的概述中,“如果需要特定的宽高比或变量限制,在调用ARROW3之前使用DASPECT、PBASPECT、AXIS或XYZLIM命令。”参见arrow3.zip中的arrow3_messes_up_my_plot .html。
汤姆·戴维斯(查看配置文件)
你好,李--
我没有风。dat。请通过我的MathWorks档案联系我,我们会解决它。
李临江(查看配置文件)
首先,我使用quiver得到箭头的P1和P2。然后我用箭头3来画箭头。我发现头部的底部与直线不垂直。你能帮我解决这个问题吗。我的代码如下:
data =负载(“wind.dat”);
x =数据(:1);
y =数据(:,2);
u=数据(:,3);
v=数据(:,4);
%//摘自“quiver.m”。计算自动缩放
如果最小值(大小(x)) = = 1, n = sqrt(元素个数(x));m = n;其他(m, n) = (x)大小;结束
Delx = diff([min(x(:)) max(x(:))])/n;
dely=diff([min(y(:))max(y(:)])/m;
del=delx.^2+dely.^2;
如果德尔> 0
len =√(u。^ 2 + v ^ 2) / del);
maxlen = max (len (:));
其他的
maxlen = 0;
结束
如果maxlen > 0
Autoscale = 0.9 / maxlen;
其他的
自动定量= 0.9;
结束
% / /颤阴谋
箭袋(x, y, u, v)
p1=[x,y];
m =自动定量* u;
n =自动定量* v;
arrow3 (p1, p1 + m, n, k, 0.18, 1.5)
轴([1 28 -1.5 1.5]),方向([8 2 1])
Valdelirio(查看配置文件)
Debasis Mohapatra(查看配置文件)
汤姆·戴维斯(查看配置文件)
版本5.17解决了R2019b中引入的行颜色问题。
Cuneyt艾登(查看配置文件)
谢谢你的邀请。请在阅读这个下载的例子html zip后评分。
汤姆·戴维斯(查看配置文件)
谢谢你的窃听器报告,大卫。
没有设置箭头颜色独立于线颜色的有意机制。我认为线条颜色问题与R2019b中新的颜色和线条样式特性有关。我已经对支持单色线和箭头的代码做了初步修改,例如您的示例,但多色线和箭头仍然是一个问题。万博1manbetx请参阅arrow3_examples.html和arrow3.zip中的辅助图像,以获得预期结果的示例。
通过我的MathWorks个人资料与我联系,我将在修改Arrow3时随时更新您。
Cuneyt艾登(查看配置文件)
大卫Brinkmeier(查看配置文件)
Matlab r2019b:颜色规范对线条颜色没有影响
源代码表明线颜色使用plot3没有设置-为什么我要设置箭头颜色独立于线?
前女友。
箭头3(-eye(3),eye(3),'k',1.25,[],0)
对我来说,它产生了3个单位矢量,带有黑色箭头和蓝色线,plot3使用默认的颜色顺序,我不想全局修改它
汤姆·戴维斯(查看配置文件)
你好,阿里,
ALPHA(默认值= 1)是一个FaceAlpha值介于0(透明)和1(不透明)之间的向量。像素的数量(分辨率)不会随着ALPHA的减少而改变,但是像素本身变得更加透明。
阿里Aghaeifar(查看配置文件)
更改“ALPHA”会降低箭头的分辨率。为什么?
阿里Aghaeifar(查看配置文件)
汤姆·戴维斯(查看配置文件)
你好,J.P--
十进制值的列向量是句柄向量。参见2011年7月26日的评论。
j . P。(查看配置文件)
如何在循环动画期间从图形中移除arrow3对象?由于某些原因,hn = arrow3(p1,p2,…)没有返回一个由线条和表面对象句柄组成的向量。事实上,hn只是一个由十进制值组成的列向量。任何帮助都将不胜感激。
萨乌拉布·帕特尔(查看配置文件)
Yoganandam Vivekanandham Pushpalatha(查看配置文件)
汤姆·戴维斯(查看配置文件)
你好,迈克--
Arrow3今年17岁;这是对MATLAB的向后兼容性的一个证明,它在所有工作。Arrow3总是绘图到当前的图形(gcf)和轴(gca),但很可能你可以通过修改第349行来改变这种行为:甘氨胆酸ax =;
迈克·波特(查看配置文件)
如何使arrow3绘制到特定的轴句柄?我试图在GUI (ui轴)中使用它,但该函数似乎不允许您将其指向特定的轴。命令'axes(…)'对UI轴不起作用
罗伯特·诺列加(查看配置文件)
检测出Khazaei(查看配置文件)
布拉德利Abell(查看配置文件)
有没有一种简单的方法来指定将箭头绘制到哪个轴?我试图在matlab应用程序中使用,必须指定轴。
人文国林(查看配置文件)
它是伟大的。然而。它的emf文件的质量很低。顺便说一下:我通过“另存为”输出emf文件。
里卡多·维加Ayora(查看配置文件)
何塞·埃科里诺(查看配置文件)
LMS(查看配置文件)
很棒的功能,非常适合我。
我该怎么处理传说中的这个问题呢?我有
情商= arrow3(…第一组箭头
lq = arrow3(…第二组箭头
图例([eq lq],'来自边缘的法线','来自图层的法线')
它给了我一个错误(“和&&运算符的操作数必须转换为逻辑标量值。”)
谢谢你的建议!
ritwik chattaraj(查看配置文件)
耿勇(查看配置文件)
你人真好~
Subhash Pidaparthi(查看配置文件)
谢谢你,汤姆
汤姆·戴维斯(查看配置文件)
你好,Ikem——
将arrow3.zip文件解压到一个文件夹,例如C:\arrow3。
然后在MATLAB命令窗口中:
cd C: \ arrow3
帮助arrow3
Ikem所罗门(查看配置文件)
请告诉我如何安装它。我在将其连接到我的matlab时遇到问题
汤姆·戴维斯(查看配置文件)
你好,约翰,
这对我很有效:
负载杜勒
图像(X)
colormap(地图)
轴图像
抓住
箭头3([235 215],[130 465],'r-2.5',1.5)
推迟
约翰·彼得·达瓦洛斯(查看配置文件)
箭头不显示如果标绘在图像上?
塔·Karemore(查看配置文件)
谢谢你汤姆!
王丽雅(查看配置文件)
你好汤姆,
对不起,我弄错了。我把lon和lat弄混了。我现在可以在世界地图上画箭头了。你可以忽略我之前的问题。非常感谢!
最好的祝福。
Liya
王丽雅(查看配置文件)
你好汤姆,
谢谢你的回答。当我画2D箭头时,在你的代码中哪个绘图函数使它工作?我找到了plot3。您能告诉我您在代码中使用的所有绘图函数吗?
--丽雅
汤姆·戴维斯(查看配置文件)
你好,丽雅--
我既没有映射工具箱也没有MATLAB的最新版本。如果你能提出具体的问题,我也许能帮上忙。
祝你好运,并致以最良好的祝愿。
——汤姆
王丽雅(查看配置文件)
你好,汤姆,我想问你一个问题。当我使用函数worldmap并在上面画箭头时,我试图修改您的代码,但我做不到。您能修改一下您的代码以便在世界地图上使用吗?非常感谢!
勒(查看配置文件)
谢谢!这个函数非常有用
亚当·丹兹(查看配置文件)
很好,省了我很多步法。
道歌(查看配置文件)
我喜欢这个.m文件。
Andreas J。(查看配置文件)
抱歉我不想提交最后的投票。在我准备写评论的时候,我并没有阅读“相对于PlotBox对角线”,但当我重新阅读描述时,我关闭了标签。
但我仍然认为这是一个恼人的功能,我更喜欢它,如果我可以选择它应该是相对大小或固定大小。我也不喜欢去掉坐标轴。我知道一个解决方法,但每次我不得不使用箭头3时,它仍然困扰我。只是我的意见。
Andreas J。(查看配置文件)
丹尼尔·弗里希(查看配置文件)
杨杨(查看配置文件)
谢谢你的arrow3项目。
本(查看配置文件)
伟大的代码。我已经用了很长时间了。
本(查看配置文件)
马太福音(查看配置文件)
汤姆·戴维斯(查看配置文件)
嗨,乔纳斯。
请尝试5.15版本。谢谢。
——汤姆
乔纳斯(查看配置文件)
我在2002年的某个时候第一次下载了arrow3;干得好,伙计们!
为了避免与写入“UserData”属性的其他代码可能发生冲突,我建议用“setappdata(ax,'arrow3',value)”替换这些调用。
霁吗?我(查看配置文件)
它不忽略零值输入(R2012a)。
>> arrow3([1 1],[1 1])
使用arrow3时出错(第373行)
P1不能等于P2
Jeonghyun Seo(查看配置文件)
Xilu王(查看配置文件)
谢谢! !
丹尼尔(查看配置文件)
嗨,汤姆,
谢谢你的贡献。如果您可以使用字符串属性修改输入参数(类似于大多数内置函数(f.e.“LineWidth”,2)),特别是添加“Parent”属性以消除多轴问题,我会很高兴!
谢谢,
丹尼尔
汤姆·戴维斯(查看配置文件)
你好,托马茨--
请试着这样做,如果你有问题就写下来。谢谢。
%动画示例
图(5)
t =(0:π/ 40:8 *π)';u = cos (t);v =罪(t);
图3(20*t,u,v)
轴([0600,-1.5,1.5,-1.5,1.5))
网格,视图(35岁,25)
抓住
pbaspect([1.8,1.4,1])
箭头3(零(3),对角线([500,1.5,1.5]),'l',0.7,[],0)
p=[20*t,u,v];inc=4:1:长度(t);
p2=p(包括:);p1=p(inc-1,:);
hn=箭头3(p1(1,:),p2(1,:),'0_b',0.7);
因为我= 2:1:长度(p1)
删除(hn)
hn = arrow3 (p1(我,:),p2(我:),0 _b, 0.7);
暂停(0.01)
结束
推迟
独奏(查看配置文件)
Tomazc(查看配置文件)
我想在动画中使用arrow3 (for function),只显示一个箭头,所以我不能使用'hold on'。
在这种情况下,“轴”不工作,但我需要相同的视图。
任何建议吗?
图('Name',['Arrow']))
轴([-400 400 -400 400 -100 700])
包含(“x”)
YLABEL('y')
ZLABEL (' z ')
whitebg ((1 1 1));
集(gcf,“颜色”,[1,1,1]);
视图(35岁,25)
网格
因为I = 1:1:15
箭头3([x(i),y(i),z(i)],[fx(i),f(i),fz(i)];
暂停(0.1)
结束
Sauro Salomoni(查看配置文件)
做它应该做的,并且帮助文件非常详细。非常感谢!:)
加布里埃尔·阿基拉·施雷伯(查看配置文件)
加布里埃尔·阿基拉·施雷伯(查看配置文件)
汤姆·戴维斯(查看配置文件)
不要使用“编辑”菜单中的“复制图形”,而是使用“文件”菜单中的“另存为”,将图形保存为PNG文件,然后将PNG文件插入Word中。
雷尚(查看配置文件)
非常有用的三维绘图。但当我将数字复制到word时,所有由“arrow3.m”绘制的漂亮箭头都消失了。“我的命令”窗口将显示:
警告:在Painter模式下不支持RGB CData万博1manbetx
>在图形\private\restorehg中,100
在图形\private\restore 29中
出版于277
在editmenufcn第78页
我该如何解决这个问题?
雷尚(查看配置文件)
汤姆·戴维斯(查看配置文件)
宽线可能会模糊箭头提示,但线端点和箭头提示总是一致的。
菲利普Wissgott(查看配置文件)
在我的matlab (R2007a)上,在2D绘图中箭头的尖端之后可以看到箭头的线。看起来好像箭头被画在了错误的位置。
在我的例子中,arrow3是在调用"line()"和"rectangle()"之后调用的。如果需要,我可以提供进一步的信息。
汤姆·戴维斯(查看配置文件)
没有必要设置AXIS EQUAL,但是可以更改宽高比的命令应该通过调用ARROW3发出_before_。无论高宽比如何,ARROW3绘制的表面看起来都像右圆锥体和球体,但比例必须是固定的,改变比例将扭曲表面。
HTML文件中有许多示例演示了如何在PLOT、POLAR、CONTOUR、PLOT3、SURF、SLICE和PATCH之前和之后使用ARROW3。
朴林(查看配置文件)
似乎如果我想用arrow3(.....)绘制另一个plot3(......)
我应该
图中,arrow3(…);
抓住;
轴相等;%你最好使用等距轴
plot3(…);
如果我把plot3(…)放在arrow3(…)之前,就像下面一样,我看不到arrow3(…)的结果;
图3(……);
抓住;
轴相等;%你最好使用等距轴
arrow3(…);
Vaibhav Deshpande(查看配置文件)
我正在做一个平衡对称层压板的铺层优化项目,我想在每次调用fmincon时显示我的层压板的材料方向,我可以使用箭头3来显示,谢谢。
问候,
Vaibhav Deshpande。
工作正常
这是太好了。我可以用它来画我的画。谢谢!
我很喜欢用箭。m,直到我看到它不绘制任何原因,当我的m文件部署(即,运行可执行文件,由mcc)。我回到File Exchange寻找另一个箭头,而不是试图调试arrow.m。现在我使用的是arrow3,它在部署模式下工作得很好。谢谢。
我没有尝试过,但从屏幕截图来看很不错,这款游戏的想法是什么,你花了多长时间