2017-02-19 65 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。 –