exponenta event banner

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-coordinate, theta-coordinate или latitude, указанное как скаляр или вектор того же размера, что и y. Тип координат зависит от типа осей, в которые выполняется печать:

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

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

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

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

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

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

  • Полярные оси (Polar axes) - значение начальной рокоординаты.

  • Географические оси (Geographic axes) - значение начальной долготы в градусах.

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

Начальная координата z для декартовых осей, заданная как скаляр или вектор.

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

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

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

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

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

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

Цвет линии, определяемый как триплет 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, шестнадцатеричный цветовой код, имя цвета или короткое имя. '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 после создания объекта, например, изменение значений свойств или добавление точек в линию. Список свойств см. в разделе Свойства линии анимации.

Ограничения

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

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

См. также

Функции

Свойства

Представлен в R2014b