我的目標:用方括號(---]
)結束水平線繪製。以方括號結尾的繪圖線
我通常繪製水平線與
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