Продолжаем нашу замечательную серию статей про нестандартные графики в Excel. Кстати, раз уж рубрика стала постоянной, почему бы её не назвать «Эксель без штанов»? 🙂 Как обычно, никаких плагинов, обычный эксель и немного.. логики 🙂
Bullet Graph (bullet (eng) -дословный перевод «пуля») — достаточно новый вид диаграммы, появившийся всего несколько лет назад. Его придумал ни кто иной как Stephen Few, автор блога Perceprual Edge, книги о дэшбордах Information Dashboard Design (и ещё двух: Now you see it, и Show me the numbers). Ссылки на книги также доступны в конце этой статьи.
Ключевая идея, заложенная в Буллете — более компактный, и более удобный для чтения, индикатор для сложных многосоставных план-факт переменных. Очень полезен в дэшбордах. Занимает всего одну строчку, а читается не сложнее спидометров. Кстати, он уже пробегал чуть раньше в статье про диаграмму Nightingale, но, видимо, на него никто на тот момент не обратил внимание.
Итак, график в разрезе:
Наподобие большинству корректных дэшборд индикаторов, буллет предназначен для отображения только одной переменной (например, выручка накопленным итогом с начала года, как на примере сверху). При этом, значение данной переменной может быть отображено целым рядом характеризующих значений, для её сравнения (например, факт выручки в этом году, к аналогичному значению за прошлый год), и даже отнести на качественном уровне («плохо», «средне», «хорошо»).
Состав диаграммы:
А теперь строим это в экселе.
1. Делаем таблицу с данными:
2 Вычисляем все кусочки графика:
2.1 Вычисляем максимальную длину графика, как максимум из плана и факта (не забываем, что иногда план больше факта, а иногда наоборот). Делаем её чуть длиннее (умножим на 1.2, например);
2.2 Кусочки сектора есть части от максимальной длины (переводим %% в аболютные значения);
2.3 Буллет будет у нас Stack Bar / Row 100%, поэтому вычислим его кусочки: основа, кусок до плана, плановая отсечка, кусок после плана.
3. Нормируем все значения на единую длину, чтобы не пришлось задавать мин-макс значение по осям (высчитываем единую длину как максимум из значений):
4. Строим Stacked Row 100% диаграмму, и то что относится к буллету — располагаем на второй оси. Должно получиться вот так:
5. Ставим ширину зазора (gap) для подложки равную 0%.
6. Перекрашиваем сегменты буллета в чёрный, а план-отсечку в красный. Низ перекрашиваем в оттенки нужного цвета (для примера взял оттенки серого). И вот что получилось в итоге:
Две подсказки:
Итог: работает универсально при план > факте, и факте > плана.
Enjoy!
Ну а кто придумает более элегантное решение? Есть ещё пара вариантов решения задачи (например, при помощи маркеров ошибок), но меня рассказать всё — просто не хватит.
Кстати, буллеты могут быть как горизонтальными, так и вертикальными, и они ну оо-о-о-очень применимы в дэшбордах:
Как и все нестандартные графики, они требуют немного сноровки — но зато результат стоит того. Я надеюсь они найдут применение у вас:) Присылайте скриншоты!
И в заключение, ссылки на книги Стивена на Amazon.
Покупайте!
Достаточно часто у меня возникает потребность в том, чтобы нарисовать диаграмму Гантта — проектов мы ведём много. И не всегда хочется трогать графические программы — потому что открыть Adobe Illustrator, конечно же, проще всего, но.. когда нужно быстро набросать план, и визуализировать сроки/этапы проекта — тратить на это полчаса нет возможности.
Итак, открываем Эксель. У меня на вооружении .. четыре способа. Обычно на тренингах я пропагандирую смотреть на эксель не как на таблицу с набором предзаданных шаблонов диаграмм, а как на визуализатор логики. Логика она вообще штука хорошая. Зная всего несколько функций, не применяя никаких макросов, можно рисовать очень много полезных вещей.
Первый мой вариант основан на условном форматировании ячеек, второй — функцию REPEAT, третий использует диаграмму типа waterfall, а четвёртый — эксплуатирует точечную диаграмму. Сегодня рассказываю про первые два, простые.
Дано: для простоты примем, что наш план работ выстроен в единую последовательность, каждый последующий пункт плана работ начинается после окончания предыдущего. Известно, когда должен начаться проект, и сколько времени уйдёт на каждый его этап. Простая последовательность, без задержек и промежутков, без наслоений.
Вычисляем:
1. Записываем в столбец пункты (задачи) плана работ.
2. Для каждой задачи пишем её длительность (число, может измеряться в любых единицах, например, в количестве дней)
3. Вычисляем абсолютное количество дней, которое пройдёт с начала проекта, до начала / до конца задачи.
В итоге, мы получили массив из двух чисел: номер дня начала, и номер дня окончания задачи.
Строим вариант 1.
Делаем из ячеек большую таблицу, закрашенные ячейки которой будут представлять себя временные бары диаграммы:
1. Делаем счётчик: по горизонтали, в строке заголовка откладываем числа от 1 до N, где N должно превышать суммарную длительность проекта (В днях). Это дни проекта.
2. Для удобства, делаем все ячейки узкими
3. В каждой ячейке получившейся таблицы, записываем формулу
=ЕСЛИ(И(G$4>=$D5,G$4<($E5+1)),1,0)
иными словами, ЕСЛИ (номер_дня_счётчика лежит в пределах между день_начала и день_окончания), то значение ячейки будет равно 1, иначе 0
4. Форматируем ячейку условным форматированием (conditional formatting, надеюсь, вы с этим знакомы?):
Если значение ячейки = 1, то красим цвет фона и цвет шрифта в единый цвет (например, светло-синий), а значения равные 0 красим в белый.
Итог:
Простейший таймлайн готов. Он привязан к строкам таблицы, поэтому удобен для оперативной работы.
Строим вариант 2.
Он не настолько красив, но более элегантен. Всё что нам нужно сделать — это символом «|» повторить нужное количество раз (дней), с нужным оттступом. Этот символ можно нарисовать в ячейке нужное количество раз функцией REPEAT (ПОВТОР). Этот вариант мы уже рассматривали вкратце, но не лишне повторить в ином контексте.
Формула до безобразия проста:
ПОВТОР(«|»,E5-D5+1)
Мы получили нужное количество палочек, соответствующее количеству дней на задачу.
Нам остаётся только добавить спереди них количество дней, которые пройдут до момента начала задачи:
ПОВТОР(» «,D5-1),
и итоговая формула выглядит вот так:
= СЦЕПИТЬ( ПОВТОР(» «,D5-1), ПОВТОР(«|»,E5-D5+1) )
Итоговый результат незатейлив, но для пятиминутки идеален:
Кажется, вполне удобно 🙂 Останется добавить подписи дней, маркер текущего дня, и станет лучше. А если ещё и добавить разбивку бара задачи на выполненную/не выполненную части (например, задача выполнена на 30%), то всё станет вообще волшебно. Догадываетесь, как это сделать?
Ждите продолжения в следующей серии!
PS Что-то красивой инфографики с диаграммой Гантта никак не найду. Накидайте парочку в комментарии?
В прошлый раз я рассказывал о том, как строить микро-диаграммы в ячейках Excel. На самом деле это ещё не всё, что можно вытворять. Подключаем фантазию, и..
…Чего ооочень не хватало в той диаграмме — так это подписей. Добавим их следующим образом:
=ПОВТОР(«|»,D2)&» «&D2
=REPT(«|»,D2)&» «&D2
…Превращаем время в диаграмму Гантта. Наверное, самое полезно-ценное применение. В Excel просто так Ганнта не построить, MS Project вряд ли у кого-то есть, а привязать нормально к строкам с данными — ещё сложнее. Итак: полоски показывают промежутки времени, отведённые на определённую задачу.
=ПОВТОР(» «,(D2-МИН($D$2:$D$10)))&ПОВТОР(«|»,1.5*(E2-D2+1))
=REPT(» «,(D2-MIN($D$2:$D$10)))&REPT(«|»,1.5*(E2-D2+1)),
где D2 — ячейка с начальной датой, E2 — ячейка с конечной датой, а колонка D2:D10 есть колонка всех начальных дат
Умножение на 1.5 необходимо для того, чтобы соотнести ширины: в шрифте Arial пробел равен примерно полторы символа «I»
..Добавляем к графикам маркеры-окончания, а сами графики делаем пунктирами. Остаётся по-прежнему читабельно, а график принимает совсем иной вид.
Кто не верит — смотрите файл со всеми этими графиками.
Давайте ещё что-нибудь эдакое придумаем?
Есть один интересный приемчик в работе с эксель-данными. Раньше о нём упоминала Ира, но кратко и давно — а поэтому освежим архивы истории.
Допустим, у вас есть таблица. Много строк. И есть колонка, по которому все эти строки сравниваются. Например: продажи по каждому магазину торговой сети, выручка по товарным категориям, тиражи изданий, или что-либо неважно. Главное — что график строить вроде как незачем, а сравнить значения в таблице хочется. Например, хочется нам посмотреть, какие из моделей Volvo на сайте auto.ru выставляются активнее всего (вдруг вам это действительно понадобилось?).
Исходные данные, перетащенные в Excel:
Что делать? Строить диаграмму прямо в ячейке. Эксель 2010 умеет делать микро-чарты (спарклайны), но мы сейчас не об этом. Нам нужно не динамику в ячейке построить, а сравнить между собой строки. В работу берём формулу REPT («Повтор» в русской версии).
Итак, пишем в строке формулы для ячейки А3 магический код:
= REPT ( «I» ; A2), где А2 — это ячейка с количеством машин
Результат: ячейка заполнилась символами I, в количестве равном цифре каждой ячейки.
Останется лишь поставить такую ширину столбца, который позволит увидеть всю длину.
Зачем все это? Только лишь для того, чтобы оставить таблицу чистой и аккуратной, не городить графиков, и при этом сделать таблицу читабельнее.
Как заметили самые смекалистые — такие диаграммы как будто бы не работают на больших числах. А вот нет — делаем дополнительную промежуточную колонку, в которой тысячые и миллионные разряды убираем делением, и приводим все так чтобы значения не превышали 50-100.
Это еще не все. Идем дальше: визуализируем таким же способом положительные и отрицательные значения. Отрицательные строятся в одной колонке, положительные в другой. Формула контролирует, что именно отображать.
Пример: статистика изменений в предложениях всё того же Volvo (это уже выдумано, пример-то надо продолжать). Результат:
Как?
1. Строим модуль значения каждой строки, так как REPT ничего не знает про отрицательные числа
2. Строим в двух колонках REPTы так, что в одной колонке только положительные, в другой только отрицательные
3. Форматируем, и приводим в порядок. Works!
Кстати, все подобные экзерсисы — отличный тренажер для логики. Love it!
За что мы любим MS Excel? — он позволяет строить графики, и обладает широкими возможностями его настройки. За что мы не любим Numbers form Mac? — за то что его возможности кастомизации ограничены настолько, что данную программу инфограферам использовать просто запрещено. Только ради простых графиков в современном «мак-стиле»:)
В Экселе стандартный график мы можем «довести до ума», выстроив правильные акценты, цвета, оптимизировав соотношение чернил/данных. Не составляет труда за несколько минут сделать превращение (не идеальное, но всё же). Взяли обычную статистику с Википедии (население СССР). В вики предлагается вот такой график:
Но мы же понимаем, что его можно улучшить. Есть несколько важных моментов
Вот что получилось в итоге (да, огрехов ещё очень много, но это уже гораздо понятнее, за 5 минут было сделано, исползованы только стандартные настройки графиков, возможные в Excel).
Хотите посоревноваться? Берите график, и делайте свои варианты!
А теперь наконец-то обратимся к теме поста.Составим несколько типов графиков вместе, и получим.. термометр! Иногда его ещё называют индикатором «батарейки». Применяется чаще всего в дэшбордах, для индикации уровня нормальности/проблемности определённого KPI-показателя.
В несколько простых шагов можно легко научиться его делать. Он состоит из 2 (4) частей:
Как такое делается?
Прикладываю экселевский файл с описаниями и двух других вариантов графика. Скачайте шаблон xls «термометров», там все стадии очень подробно постарался описать. Можете убедиться — работает. И это ещё не все термометры, которые можно делать при помощи лишь стандартных средств экселя:)
Ну как вам? чуть позже расскажу про «спидометры». Stay tuned!
Друзья, мы начинаем новую рубрику! Давно уже мы говорим о том, что инфографика имеет значительный потенциал применения в бизнесе, и даже выполняем для клиентов заказы с применением только базовых инструметнтов — но мало уделяем этому на нашем блоге. Пора исправлять ситуацию. Будем пропагандировать!
Бизнес-инфографика — так и назовём новую регулярную рубрику.
Основные темы для освещения:
Приглашаю к совместному творчеству на блоге всех, у кого Эксель является часто используемым инструментом, а также тех кто владеет навыками VBA (visual basi for applications).