animatedline

Создание анимированной линии

Описание

an = animatedline создает анимированную линию, которая не имеет данных, и добавляет ее к текущей системе координат. Создать анимацию путем добавления точек к линии в цикле с помощью addpoints функция.

пример

an = animatedline(x,y) создает анимированную линию с начальными точками данных, заданными x и y.

an = animatedline(x,y,z) создает анимированную линию с начальными точками данных, заданными x, y, и z.

пример

an = animatedline(___,Name,Value) задает свойства анимированной линии, используя один или несколько аргументы пары "имя-значение". Для примера, 'Color','r' устанавливает красный цвет линии. Используйте эту опцию после любой комбинации входных аргументов в предыдущих синтаксисах.

an = animatedline(ax,___) создает линию в осях, заданных как ax вместо в текущей системе координат. Задайте ax перед всеми другими входными параметрами в любом из предыдущих синтаксисов.

Примеры

свернуть все

Создайте начальный анимированный объект линии. Затем используйте цикл, чтобы добавить 1000 точек к линии. После добавления каждой новой точки используйте drawnow отображение новой точки на экране.

h = animatedline;
axis([0,4*pi,-1,1])

x = linspace(0,4*pi,1000);
y = sin(x);
for k = 1:length(x)
    addpoints(h,x(k),y(k));
    drawnow
end

Для более быстрого рендеринга добавляйте больше одной точки к линии каждый раз через цикл или используйте drawnow limitrate.

Запросите точки линии.

[xdata,ydata] = getpoints(h);

Удалите точки из линии.

clearpoints(h)
drawnow

Установите красный цвет анимированной линии и установите ее ширину линии равным 3 точкам.

x = [1 2];
y = [1 2];
h = animatedline(x,y,'Color','r','LineWidth',3);

Figure contains an axes. The axes contains an object of type animatedline.

Ограничьте число точек в анимированной линии 100. Используйте цикл, чтобы добавить одну точку к линии за раз. Когда линия содержит 100 точек, добавление новой точки к линии удаляет самую старую точку.

h = animatedline('MaximumNumPoints',100);
axis([0,4*pi,-1,1])

x = linspace(0,4*pi,1000);
y = sin(x);
for k = 1:length(x)
    addpoints(h,x(k),y(k));
    drawnow
end

Используйте цикл, чтобы добавить 100 000 точек к анимированной линии. Поскольку число точек является большим, добавление одной точки к линии каждый раз через цикл может быть медленным. Вместо этого каждый раз добавляйте 100 точек к линии через цикл для более быстрой анимации.

h = animatedline;
axis([0,4*pi,-1,1])

numpoints = 100000;
x = linspace(0,4*pi,numpoints);
y = sin(x);
for k = 1:100:numpoints-99
    xvec = x(k:k+99);
    yvec = y(k:k+99);
    addpoints(h,xvec,yvec)
    drawnow
end

Другой метод создания более быстрых анимаций - использовать drawnow limitrate вместо drawnow.

Используйте цикл, чтобы добавить 100 000 точек к анимированной линии. Поскольку число точек большая, использование drawnow отображение изменений может быть медленным. Вместо этого используйте drawnow limitrate для более быстрой анимации.

h = animatedline;
axis([0,4*pi,-1,1])

numpoints = 100000;
x = linspace(0,4*pi,numpoints);
y = sin(x);
for k = 1:numpoints
    addpoints(h,x(k),y(k))
    drawnow limitrate
end

Управление скоростью анимации путем прохождения нескольких итераций цикла анимации перед рисованием обновлений на экране. Используйте этот метод при drawnow слишком медленно и drawnow limitrate слишком быстро.

Для примера обновляйте экран каждые 1/30 секунды. Используйте tic и toc команды, чтобы отслеживать, сколько времени проходит между обновлениями экрана.

h = animatedline;
axis([0,4*pi,-1,1])
numpoints = 10000;
x = linspace(0,4*pi,numpoints);
y = sin(x);
a = tic; % start timer
for k = 1:numpoints
    addpoints(h,x(k),y(k))
    b = toc(a); % check timer
    if b > (1/30)
        drawnow % update screen every 1/30 seconds
        a = tic; % reset timer after updating
    end
end
drawnow % draw final frame

Меньший интервал обновляет экран чаще и приводит к более медленной анимации. Для примера используйте b > (1/1000) чтобы замедлить анимацию.

Входные параметры

свернуть все

Начальный x -cordinate, theta -cordinate, или значение широты, заданное в виде скаляра или вектора того же размера, что и y. Тип координаты зависит от типа осей, в которые вы строите график:

  • Декартовы оси - значение является начальной x -координата.

  • Полярные оси - значение является начальной theta -согласования.

  • Географические оси - значение является начальной широтой в степенях.

Типы данных: double

Начальный y -cordinate, rho -cordinate, или значение долготы, заданное в виде скаляра или вектора того же размера, что и x. Тип координаты зависит от типа осей, в которые вы строите график:

  • Декартовы оси - значение является начальной y -координата.

  • Полярные оси - значение является начальной rho -согласования.

  • Географические оси - значение является начальной долготой в степенях.

Типы данных: double

Стартовая z-координата для Декартовых осей, заданная в виде скаляра или вектора.

Типы данных: double

Целевые оси, заданные как Axes, PolarAxes, GeographicAxes, Group, или Transform объект. Если вы не задаете объект осей, то animatedline использует текущую систему координат.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'Color','red','Marker','o'

Перечисленные здесь свойства анимированной линии являются только подмножеством. Полный список см. в разделе Свойства AnimatedLine.

Цвет линии, заданный как триплет RGB, шестнадцатеричный код цвета, название цвета или краткое имя. Значение по умолчанию [0 0 0] соответствует черному.

Для пользовательского цвета укажите триплет RGB или шестнадцатеричный код цвета.

  • Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0,1]; для примера, [0.4 0.6 0.7].

  • Шестнадцатеричный код цвета - это вектор символов или строковый скаляр, который начинается с хэш-символа (#), за которым следуют три или шесть шестнадцатеричных цифр, которые могут варьироваться от 0 на F. Значения не зависят от регистра. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' являются эквивалентными.

Кроме того, вы можете задать имена некоторых простых цветов. В этой таблице перечислены именованные опции цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.

Название цветаКраткое имяТриплет RGBШестнадцатеричный цветовой кодВнешность
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

'none'Не применяетсяНе применяетсяНе применяетсяНет цвета

Вот триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию MATLAB® использует на многих типах графиков.

Триплет RGBШестнадцатеричный цветовой кодВнешность
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Стиль линии, заданный как одно из опций, перечисленных в этой таблице.

Стиль линииОписаниеРезультирующая линия
'-'Сплошная линия

'--'Штриховая линия

':'Пунктирная линия

'-.'Штрих-пунктирная линия

'none'Нет линииНет линии

Ширина линии, заданная как положительное значение в точках, где 1 точка = 1/72 дюйма. Если у линии есть маркеры, ширина линии также влияет на ребра маркера.

Ширина линии не может быть более тонкой, чем ширина пикселя. Если вы задаете ширину линии значение, которое меньше, чем ширина пикселя в вашей системе, линия отображается как один пиксель в ширину.

Символ маркера, заданный как одно из значений, перечисленных в этой таблице. По умолчанию объект не отображает маркеры. Установка символа маркера добавляет маркеры в каждую точку данных или вершину.

ЗначениеОписание
'o'Круг
'+'Плюс знак
'*'Звездочка
'.'Точка
'x'Крест
'_'Горизонтальная линия
'|'Вертикальная линия
'square' или 's'Квадрат
'diamond' или 'd'Алмаз
'^'Направленный вверх треугольник
'v'Нисходящий треугольник
'>'Треугольник , указывающий вправо
'<'Треугольник , указывающий влево
'pentagram' или 'p'Пятиконечная звезда (пентаграмма)
'hexagram' или 'h'Шестиконечная звезда (гексаграмма )
'none'Маркеров нет

Размер маркера, заданный как положительное значение в точках, где 1 точка = 1/72 дюйма.

Цвет контура маркера, заданный как 'auto', триплет RGB, шестнадцатеричный цветовой код, название цвета или краткое имя. Значение по умолчанию 'auto' использует тот же цвет, что и Color свойство.

Для пользовательского цвета укажите триплет RGB или шестнадцатеричный код цвета.

  • Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0,1]; для примера, [0.4 0.6 0.7].

  • Шестнадцатеричный код цвета - это вектор символов или строковый скаляр, который начинается с хэш-символа (#), за которым следуют три или шесть шестнадцатеричных цифр, которые могут варьироваться от 0 на F. Значения не зависят от регистра. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' являются эквивалентными.

Кроме того, вы можете задать имена некоторых простых цветов. В этой таблице перечислены именованные опции цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.

Название цветаКраткое имяТриплет RGBШестнадцатеричный цветовой кодВнешность
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

'none'Не применяетсяНе применяетсяНе применяетсяНет цвета

Вот триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию, которые MATLAB использует во многих типах графиков.

Триплет RGBШестнадцатеричный цветовой кодВнешность
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Цвет заливки маркера, заданный как 'auto', триплет RGB, шестнадцатеричный цветовой код, название цвета или краткое имя. The 'auto' опция использует тот же цвет, что и Color свойство родительской оси. Если вы задаете 'auto' и блок вывода осей невидим, цвет заливки маркера является цветом рисунка.

Для пользовательского цвета укажите триплет RGB или шестнадцатеричный код цвета.

  • Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0,1]; для примера, [0.4 0.6 0.7].

  • Шестнадцатеричный код цвета - это вектор символов или строковый скаляр, который начинается с хэш-символа (#), за которым следуют три или шесть шестнадцатеричных цифр, которые могут варьироваться от 0 на F. Значения не зависят от регистра. Таким образом, цветовые коды '#FF8800', '#ff8800', '#F80', и '#f80' являются эквивалентными.

Кроме того, вы можете задать имена некоторых простых цветов. В этой таблице перечислены именованные опции цвета, эквивалентные триплеты RGB и шестнадцатеричные цветовые коды.

Название цветаКраткое имяТриплет RGBШестнадцатеричный цветовой кодВнешность
'red''r'[1 0 0]'#FF0000'

'green''g'[0 1 0]'#00FF00'

'blue''b'[0 0 1]'#0000FF'

'cyan' 'c'[0 1 1]'#00FFFF'

'magenta''m'[1 0 1]'#FF00FF'

'yellow''y'[1 1 0]'#FFFF00'

'black''k'[0 0 0]'#000000'

'white''w'[1 1 1]'#FFFFFF'

'none'Не применяетсяНе применяетсяНе применяетсяНет цвета

Вот триплеты RGB и шестнадцатеричные цветовые коды для цветов по умолчанию, которые MATLAB использует во многих типах графиков.

Триплет RGBШестнадцатеричный цветовой кодВнешность
[0 0.4470 0.7410]'#0072BD'

[0.8500 0.3250 0.0980]'#D95319'

[0.9290 0.6940 0.1250]'#EDB120'

[0.4940 0.1840 0.5560]'#7E2F8E'

[0.4660 0.6740 0.1880]'#77AC30'

[0.3010 0.7450 0.9330]'#4DBEEE'

[0.6350 0.0780 0.1840]'#A2142F'

Максимальное число точек, сохраненных и отображаемых как часть линии, заданное в виде положительного значения или Inf. По умолчанию значение составляет миллион точек. Если число точек превышает максимальное разрешенное значение, то анимированная линия сохраняет последние добавленные точки и отбрасывает точки из начала линии. Эти сброшенные точки больше не отображаются на экране и не возвращаются при использовании getpoints.

Используйте это свойство для ограничения числа точек, появляющихся на экране в любое заданное время, или для ограничения используемого объема памяти. Если вы задаете значение следующим Inf, тогда анимированная линия не отбрасывает никаких точек, но сохранённое число точек ограничено объемом доступной памяти.

Пример: 10

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Выходные аргументы

свернуть все

AnimatedLine объект. Использование an для изменения AnimatedLine объект после его создания, например, изменение значений свойств или добавление точек к линии. Список свойств см. в разделе Свойств ALine.

Ограничения

Анимированные линии не поддерживают всплывающих подсказок.

Расширенные возможности

См. также

Функции

Свойства

Введенный в R2014b
Для просмотра документации необходимо авторизоваться на сайте