Инфографические диаграммы из текстового файла с помощью выражений (expression) в After Effects.
Текстовая таблица
В новом пустом текстовом файле создаем строки с такими переменными, в таком формате:
bar1 = [var1, var2, var3,…];
Например (Дата, Доход, Объем):
bar1 = [“2000”, 153, 344] bar2 = [“2001”, 407, 512] bar3 = [“2002”, 241, 723] bar4 = [“2003”, 179, 811] bar5 = [“2004”, 226, 869] bar6 = [“2005”, 87, 778]
Гистограмма из баров
Создаем новый шейповый слой Rectangle, и size у rectangle path ставим на [100,100].
Переименуем “Group 1” в “bar1” (такое же имя как и у первой переменной из вашей текстовой таблицы).
Добавим выражение (Expression) для Shape Layer > Bar1 > Transform > Scale:
var myIndex = thisProperty.propertyGroup(2).name; $.evalFile("/Users/Folder/chart.txt"); // ссылка на текстовый файл var myVal = linear(time-(myIndex.substr(3,2)/5), 0,1,0,eval(myIndex)[1]); [myVal ,value[1]]
Третья строка включает в себя задержку, без задержки вместо третьей строки можно использовать эту строку: var myVal = linear(time, 0,1,0,eval(myIndex)[1]);
Здесь (строка myIndex.substr(3,2)/5)) – каждая итерация (бар) группы будет сдвинут во времени на 0,2 секунды (1/5 равна 5/25 кадров)
Здесь, thisProperty.propertyGroup () – позволяет получить доступ к значениям свойств внутри иерархии группы. для примера посмотрите на картинки ниже:
Добавим выражение (Expression) для Shape Layer > Bar1 > Transform > Position:
var myIndex = thisProperty.propertyGroup(2).name; var shift = (myIndex.substr(3,2)-1) * 110; [value[0], shift]
Это выражение нужно для сдвига позиции бара, относительно его номера индекса. Вторая строка извлекает увеличивающееся число из имени группы и умножает ее на размер бара по высоте (100) + зазор (10), чтобы сдвинуть положение бара по вертикали.
Добавим выражение (Expression) для Shape Layer > Bar1 > Transform > Anchor point:
[-thisProperty.propertyGroup(2).content("Rectangle Path 1").size[0]/2,value[1]]
Это выражение будет выравнивать бар слева. Это выражение извлекает х size бара (поднимается на 2 уровень (выше), а затем с помощью .content просматривает объекты находящиеся там), и сдвигает точку привязки отрицательно половины его значения.
Дублируем “bar1” группу столько раз, сколько вы создали переменных в текстовом файле; Ваш график должен строить сам себя.
Лейблы для отображения года
Новый текстовый слой
Для Source Text добавим выражение:
$.evalFile("/Users/Folder/chart.txt"); for( i=1 ; i < 7 ; i++ ) { myyears += eval("bar"+i)[0]+ "\r" ; } myyears.replace("undefined","")
Настроим размера шрифта и интервал между абзацами в панели Paragraph для выравнивания текст относительно бара.
График кривой
Создаем новый корректирующий слой Adjustment Layer
На него добавим эффект Effect > Generate > Write-on
Добавим эффект Effect > Expression Controls > Point Control и переименуем его в “offset”
Добавим выражение для: Adjustment Layer > Effects > Write-on > Brush Position
$.evalFile("your_file_path"); var t = time*5/2; var i = Math.min(5,Math.floor(t+1)); var offset = effect("offset")("Point"); mypoint1 = [eval("bar"+i)[1],i*110]+offset; mypoint2 = [eval("bar"+(i+1))[1],(i+1)*110]+offset; linear(t,i-1,i,mypoint1, mypoint2)
Настроим Brush Size.
Переместим значение эффекта Point Control (offset) для выравнивания графика кривой с гистограммой.
Разберем код:
Math.floor() округляет число ВНИЗ до ближайшего целого числа
Math.ceil() округляет число в его меньшую сторону
Переменная t определяет скорость анимации.
Строки ниже, определяют две переменных для стартовой и конечной позиции.
mypoint1 = [eval(“bar”+i)[1],i*110]+offset;
mypoint2 = [eval(“bar”+(i+1))[1],(i+1)*110]+offset;
Переменная var offset, хранит значение свойства Point у эффекта offset.
Источник: aexpr.wordpress.com