【Matlab學習手記】繪製帶箭頭直線

Matlab提供了繪製箭頭的函數,如以下函數及效果圖,可見,此函數繪製的範圍限定在[0, 1]之間,如果要在指定位置繪製箭頭,則此方法不可取,需要重新定義繪圖函數,將實際座標換算到[0, 1]之間。

annotation('arrow', [0, 1], [0, 1]);

 源代碼

function PlotLineArrow(obj, x, y, markerColor, lineColor)
% 繪製帶箭頭的曲線
% 繪製散點圖
plot(x, y, 'o', 'Color', markerColor, 'MarkerFaceColor', markerColor);
% 獲取 Axes 位置
posAxes = get(obj, 'Position');
posX = posAxes(1);
posY = posAxes(2);
width = posAxes(3);
height = posAxes(4);
% 獲取 Axes 範圍
limX = get(obj, 'Xlim');
limY = get(obj, 'Ylim');
minX = limX(1);
maxX = limX(2);
minY = limY(1);
maxY = limY(2);
% 轉換座標
xNew = posX + (x - minX) / (maxX - minX) * width;
yNew = posY + (y - minY) / (maxY - minY) * height;
% 畫箭頭
annotation('arrow', xNew, yNew, 'color', lineColor);

示例

clear; clc;
x = 1 : 10;
y = sin(x);
plot(x, y, '.')
hold on
for i = 1 : 9
    PlotLineArrow(gca, [x(i), x(i + 1)], [y(i), y(i + 1)], 'b', 'r')
end
hold off

效果圖

說明: 先繪製原來的圖,建議用.表示,後面會被覆蓋,確定好Axes,得到相關的信息,然後逐點繪製箭頭。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章