2017-02-19 67 views
1

我的目标:用方括号(---])结束水平线绘制。以方括号结尾的绘图线

我通常绘制水平线与

line([0,1],[2,2],'linestyle',':') 

我可以通过

plot([0,1],[2,2],'o') 

但不是方括号在末尾添加通常的标记。

有什么建议吗?

+0

对不起,但你的问题是什么? 将方括号添加到哪个命令以及哪个参数位置????? –

+4

@AboLregal这个问题非常清楚,他想在图表中添加一个方括号*作为标记。也请拨打问号的用法,其中一个足以证明您有问题。 – Adriaan

+1

可以找到一个可能的,但可能在计算上比必要的更重的[在这个答案中](http://stackoverflow.com/a/36070755/5211833):在行尾的方括号的覆盖和图像。 – Adriaan

回答

5

这里的一个可怕的黑客,有点达到你想要的:

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]); 

结果:

enter image description here

的想法是,可使用遮蔽正方形标记来获得的 “托架” 标志物。显然这不适合所有的情节,但我认为你可以从这里工作...

3

我觉得你的最简单的办法是在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) 

旋转是不完美的,但它是一个良好的开端。下面是结果:

bracket end


编辑:

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) 
+0

感谢您的回答。然而,当我输入'l = line(...'命令时,我只为'l'提供了一个'double',它没有任何字段或结构。对此的任何想法? –

+0

@AmirSagiv这很奇怪,你是否画出了这条线?也许你有一个叫做'line'的变量?尝试在Matlab的新会话中运行。或者,用'plot'替换'line',就像上面的第二个例子(你可以保持相同的输入)。 – EBH

+0

在新的会话中仍然与'plot'一样。这是一个相对较新的Matlab功能吗?我正在运行2013a。 –