我的目标:用方括号(---]
)结束水平线绘制。以方括号结尾的绘图线
我通常绘制水平线与
line([0,1],[2,2],'linestyle',':')
我可以通过
plot([0,1],[2,2],'o')
但不是方括号在末尾添加通常的标记。
有什么建议吗?
我的目标:用方括号(---]
)结束水平线绘制。以方括号结尾的绘图线
我通常绘制水平线与
line([0,1],[2,2],'linestyle',':')
我可以通过
plot([0,1],[2,2],'o')
但不是方括号在末尾添加通常的标记。
有什么建议吗?
这里的一个可怕的黑客,有点达到你想要的:
XVALS = [0,1; 0,2; 0,3].';
YVALS = [3 3; 2,2; 1,1].';
INVIZ_OFFSET = 0.04;
figure();
% Step 1: Plot squares:
plot(XVALS(2,:), YVALS(2,:),'bs');
% Step 2: Plot invisible squares:
hold on;
plot(XVALS(2,:)-INVIZ_OFFSET, YVALS(2,:),'ws','MarkerFaceColor','w');
% Step 3: Plot lines
plot(XVALS, YVALS,':b');
% Play with limits:
axis image; xlim([0,5]); ylim([0,4]);
结果:
的想法是,可使用遮蔽正方形标记来获得的 “托架” 标志物。显然这不适合所有的情节,但我认为你可以从这里工作...
我觉得你的最简单的办法是在text
命令:
l = line([0,1],[2,2],'linestyle',':');
text(l.XData(end),l.YData(end),']','VerticalAlignment','middle',...
'FontSize',12,'FontWeight','bold','Color',l.Color)
你可以走得更远,并添加旋转:
x = 0:0.1:0.5*pi;
p = plot(x,cos(x)+1.5,'--r');
text(p.XData(end),p.YData(end),']','VerticalAlignment','middle',...
'Rotation',atand(diff(p.YData(end-1:end))/diff(p.XData(end-1:end))),...
'FontSize',12,'FontWeight','bold','Color',p.Color)
旋转是不完美的,但它是一个良好的开端。下面是结果:
编辑:
MATLAB的的2014B之前的版本,您将需要使用get
功能:
l = line([0,1],[2,2],'linestyle',':');
x = get(l,'XData');
y = get(l,'YData');
text(x(end),y(end),']','VerticalAlignment','middle',...
'FontSize',12,'FontWeight','bold','Color',l.Color)
感谢您的回答。然而,当我输入'l = line(...'命令时,我只为'l'提供了一个'double',它没有任何字段或结构。对此的任何想法? –
@AmirSagiv这很奇怪,你是否画出了这条线?也许你有一个叫做'line'的变量?尝试在Matlab的新会话中运行。或者,用'plot'替换'line',就像上面的第二个例子(你可以保持相同的输入)。 – EBH
在新的会话中仍然与'plot'一样。这是一个相对较新的Matlab功能吗?我正在运行2013a。 –
对不起,但你的问题是什么? 将方括号添加到哪个命令以及哪个参数位置????? –
@AboLregal这个问题非常清楚,他想在图表中添加一个方括号*作为标记。也请拨打问号的用法,其中一个足以证明您有问题。 – Adriaan
可以找到一个可能的,但可能在计算上比必要的更重的[在这个答案中](http://stackoverflow.com/a/36070755/5211833):在行尾的方括号的覆盖和图像。 – Adriaan