Помеченные горизонтальные стрелки, указывающие на вертикальную линию

Я пытаюсь построить некоторые аннотации, чтобы они соответствовали моим графикам ступенчатой ​​​​функции. В настоящее время у меня есть эти графики, и я пытался понять, как рисовать горизонтальные стрелки, указывающие на вертикальные линии. Мне также понадобятся помеченные вертикальные линии, которые указывают на горизонтальные линии.

Я приложил изображение, которое показывает (красным цветом), что я имею в виду. Я пробовал функцию annotation(), но мне действительно сложно получить стрелки там, где я хочу. Если бы кто-нибудь не возражал объяснить, как использовать эту функцию или альтернативные методы для того, чего я пытаюсь достичь, это было бы потрясающе!

Matlab Plot со стрелками, которых я хотел бы достичь.

РЕДАКТИРОВАТЬ: Есть ли способ изменить размер наконечника стрелы колчана?

введите здесь описание изображения


person Cory    schedule 27.01.2021    source источник


Ответы (1)


Использование Quiver в 2D-подсюжете

Не совсем уверен, что это лучше или проще, но я использовал функцию quiver() для построения линий, показанных ниже. В этом случае функция quiver() принимает несколько входных данных. В приведенном ниже полном сценарии я использовал вдвое больше вызовов quiver() для построения перекрывающихся стрелок, чтобы создать двунаправленную стрелку.

Аннотации колчана со стрелой


Вызов функции:

quiver(Start_Point(1),Start_Point(2),X_Displacement,Y_Displacement,0);

• Start_Point → равно [x y] (координата x координата y)
• Start_Point(1)координата x начала стрелки< br> • Start_Point(2)координата Y начала стрелки
X_Displacement → расстояние по горизонтали от начала массива
Y_Displacement → расстояние по вертикали от начала массива


Настройка максимального размера наконечника стрелки:

Максимальный размер стрелки можно задать с помощью свойства 'MaxHeadSize'.

clf;
Start_Point(1) = 0;
Start_Point(2) = 0;
X_Displacement = 0; Y_Displacement = 10;
Magnitude = sqrt(X_Displacement.^2 + Y_Displacement.^2);

quiver(Start_Point(1),Start_Point(2),X_Displacement,Y_Displacement,0,'Color','r','MaxHeadSize',1/Magnitude);
hold on 

Start_Point(1) = 0;
Start_Point(2) = 0;
X_Displacement = 100; Y_Displacement = 0;
Magnitude = sqrt(X_Displacement.^2 + Y_Displacement.^2);
quiver(Start_Point(1),Start_Point(2),X_Displacement,Y_Displacement,0,'Color','r','MaxHeadSize',1/Magnitude);
person MichaelTr7    schedule 27.01.2021
comment
Идеально! Большое спасибо за помощь! - person Cory; 27.01.2021
comment
@Cory Нет проблем, рад помочь. - person MichaelTr7; 28.01.2021
comment
Мне удалось заставить стрелки работать, но для некоторых моих функций наконечники стрел огромны. Есть ли способ сделать их определенного размера? Я отредактировал начальный пост с примером. - person Cory; 29.01.2021
comment
Использование свойства MaxHeadSize может помочь. Я добавил в свой ответ скрипт, который пытается нормализовать это в соответствии с величиной/длиной стрелки, поскольку наконечник стрелки пропорционален ее длине. - person MichaelTr7; 29.01.2021