Инфографические диаграммы из текстового файла с помощью выражений (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

Полноценный видеокурс по After Effects и Моушн Дизайну

Узнать подробнее...