Как сделать интерактивный график

Как сделать график на SVG

Как сделать интерактивный график

Сейчас все активно обсуждают радости и гадости удалённой работы, и мы даже выпустили статью на эту тему. А ещё провели небольшой опрос и попросили наших пользователей рассказать, с какими трудностями они сталкиваются во время работы дома (спойлер — все ленятся). Статистику нужно как-то красиво оформить, так почему бы не сделать SVG-график? Заодно научимся чему-нибудь новому. Поехали!

Как сделать интерактивный графикВот такую диаграмму получим в итоге

Давайте немного поговорим о том, что такое SVG. Это формат векторной графики, который позволяет растягивать и сжимать изображения без потери качества, очень удобно. Такая возможность реализована за счёт крутой особенности SVG — фактически это обычный код. Каждое изображение описано опорными точками, кривыми и простыми фигурами, которые представляют из себя строки кода, их можно изменять в обычном редакторе. И, конечно, SVG-элементы можно создавать с нуля самим.

Именно этим и займёмся — создадим SVG-диаграмму и легенду к ней, а затем стилизуем всё с помощью CSS и в самом конце добавим немного JavaScript-магии. Вам понадобятся базовые знания HTML, CSS и JavaScript. Если их пока нет — самое время пройти бесплатные интерактивные курсы, а после этого вернуться к туториалу.

Создаём диаграмму

1. Подготовка

2. Добавляем SVG

Есть разные методы вставки SVG-элементов, самый подходящий для наших целей — вставить код элемента непосредственно в HTML, то есть заинлайнить. Это способ позволяет изменять свойства SVG-элементов и фигур прямо из CSS. Добавим разметку диаграммы:

Количество окружностей равно количеству секций в диаграмме. У нас их будет семь.

3. Создаём секции

Ещё учтём, что по умолчанию все секции будут начинаться из одной точки, а нам нужно расположить их одну за другой по кругу. Чтобы добиться нужного поведения, используем свойство stroke-dashoffset — оно позволит сдвинуть обводку на нужное нам расстояние.

4. Немного математики

Можно пропустить, если вы не любите математику.

Вот откуда взялась длина секции в свойстве stroke-dasharray — это процент, который занимает каждая секция диаграммы согласно данным статистики.

5. Легенда

Диаграмма готова, а теперь давайте добавим к ней легенду с описанием секций. Мы не будем изобретать ничего сложного, поэтому пробежимся по основным этапам вскользь:

Убираем лишние отступы и маркеры у списка, задаём отступы нужным элементам, указываем максимальную ширину всего блока с легендой, стилизуем текст и добавляем эффект при наведении на название секции:

На прошлом этапе мы убрали встроенные маркеры у списка и добавили паддинг слева у его элементов, подготовив место для кастомных маркеров. Теперь создадим их с помощью псевдоэлемента before и добавим такие же цвета, как у секций диаграммы:

Готово! Теперь у нас есть диаграмма и легенда к ней.

Добавляем немного интерактивности

Всё хорошо, но не помешало бы сделать диаграмму более живой. Давайте добавим небольшую анимацию во время отрисовки и эффекты при наведении.

1. Анимация

В предыдущем туториале мы уже разбирали, как сделать простую анимацию. Если вы никогда не делали анимации на CSS, будет полезно для начала прочитать его.

Всё работает — секции постепенно появляются в течение заданного времени.

2. Эффект при наведении

Теперь переход между состояниями происходит плавно.

3. Немного JavaScript

Всё почти готово, но хочется ещё создать связь между легендой и диаграммой. В этом нам поможет JavaScript. Если вы пока с ним не знакомы, то познакомьтесь. Оно того стоит, правда.

Вот шаги, которые должны быть реализованы в скрипте:

Здесь мы отслеживаем движение мыши с помощью событий mouseover (курсор над элементом) и mouseout (курсор уходит с элемента). А для поиска нужной секции используем совпадение порядковых номеров названий в легенде и секций диаграммы — index названия = index секции. Нужно учесть, что их всегда должно быть равное количество.

Вот теперь диаграмма готова! Весь код, который мы написали в туториале, доступен на CodePen.

See the Pen svg pie chart by sasha_htmlacademy (@sasha-sm) on CodePen.

Полезности

SVG — для настоящих джедаев вёрстки

Почувствуйте силу на интерактивных курсах. 11 глав бесплатно, и −30% на подписку в первую неделю.

Нажатие на кнопку — согласие на обработку персональных данных

Источник

Интерактивная диаграмма

Качественная визуализация большого объема информации – это почти всегда нетривиальная задача, т.к. отображение всех данных часто приводит к перегруженности диаграммы, ее запутанности и, в итоге, к неправильному восприятию и выводам.

Вот, например, данные по курсам валют за несколько месяцев:

Как сделать интерактивный график

Строить график по всей таблице, как легко сообразить, не лучшая идея. Красивым решением в подобной ситуации может стать создание интерактивной диаграммы, которую пользователь может сам подстраивать под себя и ситуацию. А именно:

Выглядеть это может примерно так:

Как сделать интерактивный график

Нравится? Тогда поехали.

Шаг 1. Создаем дополнительную таблицу для диаграммы

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

Как сделать интерактивный график

В Excel 2007/2010 к созданным диапазонам можно применить команду Форматировать как таблицу ( Format as Table) с вкладки Главная ( Home) :

Как сделать интерактивный график

Это даст нам следующие преимущества:

Подробнее про преимущества использования подобных Таблиц можно почитать тут.

Шаг 2. Добавляем флажки (checkboxes) для валют

На появившейся панели инструментов или вкладке Разработчик ( Developer) в раскрывающемся списке Вставить ( Insert) выбираем инструмент Флажок ( Checkbox) и рисуем два флажка-галочки для включения-выключения каждой из валют:

Как сделать интерактивный график

Как сделать интерактивный график

Шаг 3. Транслируем данные в дополнительную таблицу

Теперь заполним дополнительную таблицу формулой, которая будет транслировать исходные данные из основной таблицы, если соответствующий флажок валюты включен и связанная ячейка содержит слово ИСТИНА (TRUE):

Как сделать интерактивный график

Заметьте, что при использовании команды Форматировать как таблицу ( Format as Table) на первом шаге, формула имеет использует имя таблицы и название колонки. В случае обычного диапазона, формула будет более привычного вида:

Обратите внимание на частичное закрепление ссылки на желтую ячейку (F$1), т.к. она должна смещаться вправо, но не должна – вниз, при копировании формулы на весь диапазон.

Теперь при включении-выключении флажков наша дополнительная таблица заполняется либо данными из исходной таблицы, либо искусственно созданной ошибкой #Н/Д, которая не дает линии на графике.

Шаг 4. Создаем полосы прокрутки для оси времени и масштабирования

Теперь добавим на лист Excel полосы прокрутки, с помощью которых пользователь сможет легко сдвигать график по оси времени и менять масштаб его увеличения.

Полосу прокрутки ( Scroll bar) берем там же, где и флажки – на панели инструментов Формы ( Forms) или на вкладке Разработчик ( Developer) :

Как сделать интерактивный график

Рисуем на листе в любом подходящем месте одну за другой две полосы – для сдвига по времени и масштаба:

Как сделать интерактивный график

Как сделать интерактивный график

Таким образом, после выполнения всего вышеизложенного, у вас должно быть две полосы прокрутки, при перемещении ползунков по которым значения в связанных ячейках должны меняться в интервале от 1 до 307.

Шаг 5. Создаем динамический именованный диапазон

Чтобы отображать на графике данные только за определенный интервал времени, создадим именованный диапазон, который будет ссылаться только на нужные ячейки в дополнительной таблице. Этот диапазон будет характеризоваться двумя параметрами:

Этот именованный диапазон мы позже будем использовать как исходные данные для построения диаграммы.

Как сделать интерактивный график

В качестве точки отсчета берется некая стартовая ячейка, затем задается смещение относительно нее на заданное количество строк вниз и столбцов вправо. Последние два аргумента этой функции – высота и ширина нужного нам диапазона. Так, например, если бы мы хотели иметь ссылку на диапазон данных с курсами за 5 дней, начиная с 4 января, то можно было бы использовать нашу функцию СМЕЩ со следующими аргументами:

Как сделать интерактивный график

Для создания нового именованного диапазона нужно нажать кнопку Создать ( Create) и ввести имя диапазона и ссылку на ячейки в открывшемся окне.

Сначала создадим два простых статических именованных диапазона с именами, например, Shift и Zoom, которые будут ссылаться на синюю и зеленую ячейки соответственно:

Как сделать интерактивный графикКак сделать интерактивный график

Теперь чуть сложнее – создадим диапазон с именем Euros, который будет ссылаться с помощью функции СМЕЩ ( OFFSET) на данные по курсам евро за выбранный отрезок времени, используя только что созданные до этого диапазоны Shift и Zoom и ячейку E3 в качестве точки отсчета:

Как сделать интерактивный график

Обратите внимание, что перед именем диапазона используется имя текущего листа – это сужает круг действия именованного диапазона, т.е. делает его доступным в пределах текущего листа, а не всей книги. Это необходимо нам для построения диаграммы в будущем. В новых версиях Excel для создания локального имени листа можно использовать выпадающий список Область.

Аналогичным образом создается именованный диапазон Dollars для данных по курсу доллара:

Как сделать интерактивный график

И завершает картину диапазон Labels, указывающий на подписи к оси Х, т.е. даты для выбранного отрезка:

Как сделать интерактивный график

Общая получившаяся картина должна быть примерно следующей:

Как сделать интерактивный график

Шаг 6. Строим диаграмму

Как сделать интерактивный график

Эта функция задает диапазоны данных и подписей для выделенного ряда диаграммы. Наша задача – подменить статические диапазоны в ее аргументах на динамические, созданные нами ранее. Это можно сделать прямо в строке формул, изменив

=РЯД(Лист1!$F$3;Лист1! Labels ;Лист1! Euros ;1)

Выполнив эту процедуру последовательно для рядов данных доллара и евро, мы получим то, к чему стремились – диаграмма будет строиться по динамическим диапазонам Dollars и Euros, а подписи к оси Х будут браться из динамического же диапазона Labels. При изменении положения ползунков будут меняться диапазоны и, как следствие, диаграмма. При включении-выключении флажков – отображаться только те валюты, которые нам нужны.

Таким образом мы имеем полностью интерактивную диаграмму, где можем отобразить именно тот фрагмент данных, что нам нужен для анализа.

Источник

Как построить динамический график с анимацией в Excel

Создание оригинальных, интерактивных и динамических графиков с анимацией в Excel можно реализовать с помощью макросов. Анимация очень уместна в скучных отчетах, особенно если речь идет о визуализации данных.

Как сделать интерактивный график с анимацией в Excel

Как сделать интерактивный график

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

Как сделать интерактивный график

Продолжаем заполнять вторую таблицу. В первой ячейке второй таблички указываем формулу вычитания от 100% значение, взятое из исходного показателя:

Как сделать интерактивный график

Теперь переводим оба значения в отрицательное число процентов:

Как сделать интерактивный график

Исходные данные подготовлены и обработанные. Переходим непосредственно к построению динамического графика.

Выделите диапазон ячеек D2:G1 второй таблицы и выберите график: «ВСТАВКА»-«Диаграммы»-«Гистограмма с накоплением»:

Как сделать интерактивный график

Теперь перейдите в дополнительное меню гистограммы и выберите переключатель: «РАБОТА С ДИАГРАММАМИ»-«КОНСТРУКТОР»-«Данные»-«Строка/Столбец»:

Как сделать интерактивный график

За одно снимите все галочки с опций выпадающего меню «ЭЛЕМЕНТЫ ДИАГРАММЫ» при нажатии на кнопку плюс «+».

Далее нижний (Ряд4) и через один вверх (Ряд2) присваиваем одинаковый цвет. А для остальных двух рядов (верхний Ряд1 и через один вниз Ряд3) делаем невидимыми убрав цвет заливки:

Как сделать интерактивный график

Динамический график для анимации готов, но мы добавим к нему сложную фигуру, сделанную также в офисной программе PowerPoint.

Как сделать сложную фигуру для красивых графиков в PowerPoint

Как сделать интерактивный график

Создаем 2 таких фигуры переворачиваем их вертикально создавая форму песочных часов, как показано ниже на рисунке:

Как сделать интерактивный график

Выделяем две фигуры и объединяем в одну выбрав инструмент и з дополнительного меню: «Средства рисования»-«ФОРМАТ»-«Вставка фигур»-«Объединить фигуры»-«Объединение»:

Как сделать интерактивный график

Далее необходимо создать еще одну большею по размерам фигуру «Прямоугольник» без контура. После чего необходимо наложить сверху на большой прямоугольник фигуру песочных часов предварительно выделив и выбрав: «Средства рисования»-«ФОРМАТ»-«Упорядочение»-«Переместить вперед»-«На передний план». Затем выделить их обе и выбрать инструмент: «Средства рисования»-«ФОРМАТ»-«Вставка фигур»-«Объединить фигуры»-«Группирование»:

Как сделать интерактивный график

В результате у нас получилась маска. Меняем для нее цвет заливки на «белый» используя палитру: «Средства рисования»-«ФОРМАТ»-«Стили фигур»-«Заливка фигуры»-«Цвет-белый». А чтобы удалить только лишь внешний контур сначала копируем CTRL+C, но вставляем через контекстное меню вызванное правой кнопкой мышки кликнув на пустом месте листа Excel. Из появившегося контекстного меню выбираем опцию «Рисунок», чтобы вставить фигуру как рисунок:

Как сделать интерактивный график

После чего накладываем рисунок (маску) на гистограмму с накоплением. Далее подгоняем его размер.

Добавление сложной фигуры из PowerPoint на график в Excel

Пока выделен рисунок доступно дополнительное меню с инструментом обрезки его внешней границы: «РАБОТА С РИСУНКАМИ»-«ФОРМАТ»-«Размер»-«Обрезка»

Как сделать интерактивный график

Устанавливаем новые границы с помощью маркеров и снова нажимаем на кнопку «Обрезка», чтобы получить желаемый результат.

Недостает еще визуальной имитации струи. Для этого добавим еще одну фигуру прямоугольника без контура, но с таим же цветом заливки как окрашенные рады гистограммы. Этот прямоугольник можно уже создать прямо из Excel, выбрав фигуру для струи: «ВСТАВКА»-«Иллюстрации»-«Фигуры»-«Прямоугольник». А цвета настраиваем из его дополнительного меню: «СРЕДСТВА РИСОВАНИЯ»-«ФОРМАТ»-«Стили фигур»-«Заливка»-«Цвет»-«Зеленый» и здесь же «Контур»-«Нет контура»:

Как сделать интерактивный график

Размер данного прямоугольника должен быть по высоте равен нижнему сосуду, а ширина равна горловине нижнего сосуда. Все готово для оживления с помощью анимации динамического графика VBA-макросами Excel.

Макрос для анимации динамического графика в Excel

Для добавления анимации откройте редактор макросов: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» (Alt+F11). Затем пропишите ниже приведенный код макроса прямо в Лист1:

Как сделать интерактивный график

Код макроса для копирования:

Option Explicit
Private Sub Worksheet_Change( ByVal Target As Range)

Dim i As Integer
Dim temp As Integer
temp = 1000 / ActiveSheet.Range( «B4» )

If Target.Address = «$B$2» Then

For i = 0 To Int(Target.Value * temp)
DoEvents
ActiveSheet.Range( «B3» ).Value = i / temp
Next i
ActiveSheet.Range( «B3» ).Value = Target.Value
End If
End Sub

Теперь после ввода значения в ячейку B2 будет каждый раз автоматически выполнятся макрос анимации значений в ячейках, соответственно на графике.

Нам осталось лишь добавить подписи данных на графике, передав в них значение из ячейки B3. Но в этом случае в качестве подписей данных мы не будем использовать средства диаграмм, а создадим свою с помощью надписи. Для этого выберите опцию из: «ВСТАВКА»-«Текст»-«Надпись»:

Как сделать интерактивный график

Пока выделен элемент «Надпись» выведите в строку формул ссылку на ячейку B3 и нажмите клавишу Enter на клавиатуре для подтверждения. Таким образом мы в надпись передаем значение из ячейки B3 в качестве отображаемого текста. Протестируем график на интерактивность и динамическую изменяемость с помощью анимации:

Как сделать интерактивный график

Стоит отметить что в ячейке B4 мы можем задать скорость анимации. Таким образом не сложно из интерактивного графика сделать таймер в Excel.

Как сделать интерактивный график

Анимация на графиках позволяет развеселить любую скучную презентацию с визуализацией данных на графиках и диаграммах в Excel. Теперь Ваши отчеты и труды бут привлекать к себе больше внимания.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *