«Эффект бабочки» в QlikView

Алексей Шабалин

Алексей Шабалин

Опыт работы с QlikView: с февраля 2012 года

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

QlikView

Сегодня я хочу показать, как с помощью обычного «Bar Chart», или вертикальной гистограммы, реализовать сравнение двух наборов данных по каким-то показателям симметрично относительно центра. Получится так, как на картинке выше, да и к тому же можно будет каждую ветку отображать ещё и по третьему критерию (в данном примере — по годам).

Разберем по шагам.

Исходные данные:

Для данного примера нам нужна простая таблица со значениями показателей по организациям и годам:

Показатели {POK_NAME} нам нужно сравнивать между двумя любыми {POK_KO}

Вспомогательные переменные:
Введем ряд констант.

  1. Ширина, отведенная на центральную область, в которой будут выводиться наименования показателей:

Это доля (80%) от ширины правой части, где рисуются  прямоугольники самих значений. Правая и левая части, конечно, равны.

  1. Следующие две переменные определяют среди всех попадающих в текущий фильтр организаций — минимальную и максимальную. Именно эти две организации будут сравниваться между собой на графике

При таком выборе кандидаты на сравнение будут даже при очищенном фильтре.

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

Эти переменные нужны для понимания масштаба и вычисления на его основе.

Инструкция по созданию «эффекта бабочки» в QlikView 

  1. Создаем обычный «Bar Chart», где в качестве дименшина указываем поле
    POK_NAME
  2. На вкладке Выражения («Expressions») создадим 6 выражений.

Зачем так много?

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

Для этого создаем два отдельных выражения для левой стороны, два для правой.

Одно выражение – центр, с наименованием показателей.

И еще одно выражение – крайнее левое, которое задает сдвиг всем левым значениям, что и создает эффект отображения графика относительно центра.

Итого, шесть выражений:

  1. Первое выражение задает начальный сдвиг каждому показателю левой половины:

     В Метка («Label») для этого выражения — пропишем » «, т.е. в кавычках идет пробел.
  2. Второе выражение вычисляет значение для «левой» организации и для «max года»:

    В Метка («Label») для этого выражения пропишем формулу:
  3. Третье выражение вычисляет значение для «левой» организации и для «min года»:

     В Метка («Label») для этого выражения пропишем формулу:
  4. Четвертое выражение задает центральную область для надписей — наименований показателей:

     В Метка («Label») для этого выражения  пропишем тоже » «, т.е. в кавычках идет пробел.
  5. Пятое выражение вычисляет значение для «правой» организации и для «min года»:

    В Метка («Label») для этого выражения пропишем формулу:
    =значение за @(=Min(POK_YEAR)) год
  6. Шестое выражение вычисляет значение для «правой» организации и для «max года»:

В Метка («Label») для этого выражения пропишем формулу:

Итак, получили такую визуализацию:QlikView

  1. Теперь работаем с визуальными настройками:a) На вкладке Общие (General) прописываем формулу для заголовка о том, что с чем сравнивается.

    Для этого оставляем галочку «Показывать заголовок диаграммы» («Show Title in Chart») и вписываем формулу:

QlikView

b) На вкладке Стиль (Style):

  • Разворачиваем ориентацию прямоугольников горизонтально,
  • Cтиль группировки выбираем Стопкой («Staked»).

QlikView

c) На вкладке Измерения (Dimensions):

  • Вписываем в Метка («Label») нашего дименшина слово: «показатель»,
  • Отключаем галочки Метка («Label») и Показывать легенду («Show Legend»)
  • Включаем галочку «Скрывать, когда значение Null» («Suppress When Value Is Null»).

QlikView

d) На вкладке Оси (Axes):

  • Для самого первого выражения включим галочку «Скрыть ось» («Hide Axis»)
  • Теперь зададим общий масштаб по ширнине. Для этого в первом выражении включим галочку «Стат. макс.» («Static Max») и введем следующую формулу:

    QlikView

Уже получается что-то более похожее на целевой вид:QlikView

  1. Поработаем над распределением значений на нашей гистограмме-бабочке. На вкладке Представление (Presentation):
  • Выключаем галочку Показать легенду («Show Legend»),
  • Значение параметра Кластерное («Cluster Distance») уменьшим до 2.
  • Отключим заголовок и границы
  1. Теперь изменим раскраску прямоугольников, чтобы она стала интуитивно понятной:

a) На вкладке Выражения («Expressions»).

  • Раскроем {+} у первого выражения и в Цвет фона («Background Color») впишем прозрачный цвет:
    ARGB(0,255,255,255)
  • Аналогично в Цвет фона («Background Color») второго выражения впишем:
    color(1)
  • Цвет фона («Background Color») третьего выражения:
    color(2)
  • Цвет фона («Background Color») четвертого выражения снова:
    ARGB(0,255,255,255)
  • Цвет фона («Background Color») пятого выражения:
    color(2)
  • Цвет фона («Background Color») шестого выражения:
    color(1)

QlikView
b) На вкладке Цвета (Colors):

Первый и второй цвет выбираем и прописываем на свой вкус.

В итоге получается так:QlikView

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

a) На вкладке Представление («Presentation») включаем галочку «Значения внутри сегментов» («Plot Values Inside Segments»),QlikView

b) На вкладке Выражения («Expressions») у выражений со второго по шестой включим галочку Значения на точках графика («Values on Data Points»).QlikView

с) Если цифры внутри квадратиков надо выводить белым, тогда у выражений 2, 3, 5, 6 (кроме первого и четвертого) надо раскрыть {+} и вписать всем в Цвет текста («Text Color») цвет:

RGB(255,255,255)

d) В центральном квадратике, как мы видим, отображается пока тоже число, а не название показателя. Поменяем это:

  • Обернем эту формулу функцией DUAL:
    =DUAL( POK_NAME, RangeMax(vAllSum_by_minKO,vAllSum_by_maxKO)*vCenter)
  • Но и на этом ещё не всё. Дело в том, что если текст не входит целиком в ширину, отведенную прямоугольником, то он не выводится QlikView! Поэтому напишем функцию, которая найдет ближайший пробел в тексте и сделает перенос на вторую строку:

Вот теперь наш «эффект бабочки» готов!

Расскажите о своих техниках работы с гистограммой в QlikView в комментариях. До новых встреч!

Алексей Шабалин

Опыт работы с QlikView: с февраля 2012 года Увлечение и хобби: визуализация и анализ данных, генератор идей, проработка новых технологий, разработка наглядных систем контроля процессов.

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

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

Подпишись на Data-Daily!

Введите email и будьте в курсе!

Подпишись!