Альманах визуализации, выпуск №2/6. Bubble Chart по-новому: объемное сравнение в QlikView

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

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

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

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

Бывает так, что сравниваемые линейные величины различаются между собой в десятки раз и cравнение их на линейных графиках или гистограммах не очень удобно для анализа. Чтобы представить в понятных диаграммах, приходится или включать «Log Scale», или разделять масштаб на две половины… Но есть и другое решение – объёмное сравнение!QlikView Bubble Chart

В этом случае, масштаб сравниваемых величин будет уже эквивалентен корню из исходного числа и следовательно то, что раньше, к примеру, отличалось в 100 раз, в радиусе круга будет отличаться лишь в 10. Сегодня рассмотрим вариант объемного представления данных.

Итак, начнем, как всегда, по порядку

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

Для данного примера подойдет любой источник данных, в котором можно выделить три поля: конечный набор типов данных, месяц(даты) и суммы:

Объемное сравнение: базовая визуализация

  1. Для рисования кругов создадим объект Пузырьковая диаграмма («Scatter Chart»), где укажем единственный дименшен:
    type
  2. Нажмем «Далее» и на следующей вкладке включим галочку Продвинутый режим («Advanced Mode»).
  3. Вернёмся назад на вкладку Выражения («Expressions») (кнопка «Назад»). Видим, что два выражения уже окажутся созданными, но мы их тут же заменяем на свои:

a) В качестве первого выражения пропишем:

=320+260*cos( Rank(Sum(data),1,1)*90/GetPossibleCount(type) ),
и назовем его «X» (в поле ввода Метка («Label»)).

b) Вместо второго выражения пропишем пока константу:
=0,
которую назовем соответственно «Y» (в поле ввода Метка («Label»)).

После выполнения этих действий получим:QlikView Bubble Chart

  1. Теперь, чтобы размер кружков зависел от данных, необходимо создать на той же вкладке Выражения («Expressions») третье выражение:
    Sum(data),
  2. Теперь уберем все лишнее:

a) На вкладке Общие (General):

Убираем галочку Показать заголовок диаграммы («Show Title in Chart»).

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

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

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

Включаем галочки Скрыть оси («Hide Axis») у обоих осей X и Y.

d) На вкладке Сортировка (Sort):

  • Уберем все галочки в блоке Сортировка по («Sort by»), а у выражения («Expression») включим галочку.
  • Впишем формулу «SUM(data
  • Выберем тип сортировки По убыванию («Descending»).

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

Переключим стиль отображения на «простые закрашиваемые круги».

Получим следующее:

QlikView Bubble Chart

  1. В таком виде анализировать неудобно – нужно увеличить максимальный размер отображаемого полукруга. Для этого на вкладке Представление (Presentation):
  • Выключим галочку Всплывающие метки («Pop-up Labels»)
  • Временно выключим галочку Авторизованные символы («Autosize Symbols»), чтобы ввести в поле Макс. Размер пузыря («Max Bobble Size») значение = 60
  • Снова включим галочку Авторизованные символы («Autosize Symbols»)
  1. Присвоим свой цвет для каждого полукруга, т.е. для каждого типа данных. Для этого на вкладке Выражения («Expressions») у первого выражения X раскроем {+} и в Цвет фона («Background Color») впишем следующую формулу:
    Pick( 1+Match(type, Type A, Type B, Type C, Type D, Type E, Type F),,
    RGB(255,0,0),   clATypeA,  clATypeB,  clATypeC,  clATypeD,  clATypeE,  clATypeF),

Таким образом, сопоставим для каждого типа свой цвет.

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

  1. На вкладке Цвета (Colors):
  • Сделаем фон прозрачным: ползунок Прозрачность (Transparency) на 100%
  • Границы и заголовок — отключим.

Получаем следующее:QlikView Bubble Chart

  1. Теперь займемся вертикальным сдвигом.

a) Ранее во второе наше выражение Y мы вписали константу ноль, но теперь создадим особую переменную

vDown,
и присвоим ей значение = 9.

b) После чего впишем во второе выражение Y следующую формулу:
=-vDown,

c) На вкладке Оси (Axes) установим для оси Y:
Static Min =0; Static max =200,

Объемное сравнение: настройка надписей данных

Если просто включить галочку «Метки на точках» («Labels on Datapoints») на вкладке Представление («Presentation»). В этом случае надписи типов, конечно, появятся над полусферами, но чем больше будет радиус круга, тем дальше от края круга будет надпись. Это не очень удобно для пользователя, поэтому поработаем с отображением надписей:

  1. Отключим обратно галочку «Метки на точках» («Labels on Datapoints») .
  2. Создадим копию нашего графика Пузырьковая диаграмма («Scatter Chart»):
  • Копировать – Объект (Copy to Clipboard – Object),
  • Вставить объект на лист (Paste Sheet Object)
  1. В этой копии – временно (только на период построения), поднимем Слой («Layer») выше (до уровня «Top», вкладка Макет («Layout»)), чтобы не задеть ранее созданный график. Далее всю разработку, делаем на копии.
  2. Чтобы уменьшить влияние дальности надписи от радиуса круга, на вкладке Выражения (Expressions):

Наше третье выражение SUM(data) надо обернуть функцией корня:

SQRT(SUM(data)),

Если отображаемые величины очень сильно отличаются друг от друга, тогда можно и дважды извлечь корень:

SQRT(SQRT(SUM(data))).

  1. Убираём отрисовку самих кругов:
  • на вкладке Выражения (Expressions) раскроем {+} у первого выражения (X) и изменим функцию Цвет фона («Background Color») на ARGB(0,255,255,255),
  • на вкладке Представление (Presentation):
    • включаем галочку Точки на графике («Labels on Datapoints»),
    • отключаем галочки «Highlight» и «Pop-up Labels».
  1. На вкладке Общие (General) включим галочку Только чтение («Read Only»).

В итоге получим следующее:QlikView Bubble Chart

  1. Чего-то все же не хватает. Давайте выведем надписями не только название группы, но и какие-нибудь вычисленные числовые значения и при этом на разных строчках. Для этого надо всего лишь подправить дименшин:
    =type&chr(10)&AGGR(Sum(data),type),

Как видим, функция chr(10) делает перевод на новую строку, а функция AGGR рассчитывает нужную формулу для каждого типа «type».

  1. Теперь сдвинем надписи вправо так, чтобы их начало совпадало с центром полукруга или даже чуть правее. Для этого:
  • заведем новую переменную
    vLeft,
  • присвоим ей начальное значение = 320.
  • заменим у первого выражения (X) на вкладке Выражения («Expressions») первое слагаемое в формуле «320» на переменную vLeft.
  • обязательно зададим общий масштаб для оси X на вкладке Оси (Axes). Установим для оси X:
    Static Min =0; Static max =640,

Этот же масштаб, кстати, надо установить и на объекте Пузырьковая диаграмма («Scatter Chart»), который рисует сами круги!

  • Изменяя значение переменной vLeft, мы сдвигаем надписи по горизонтали.
    При значении vLeft=345, получим вот такую визуализацию:

QlikView Bubble Chart

Объемное сравнение: линии к надписям

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

  1. Для этого необхордимо создать ещё один объект Пузырьковая диаграмма («Scatter Chart»). Клонируем теперь второй объект, рисуем надписи и временно на нём, на период построения, поднимая Слой («Layer») ещё выше (теперь все разработки делаем на нём).
  2. В скрипте нам снова необходимо создать одну вспомогательную таблицу:
  3. Переходим на вкладку Измерения («Dimensions») и создаем ещё один вычисляемый дименшин:

     и передвигаем его на первое место (кнопка «Promote»).
  1. На вкладке Выражения (Expressions):
  • В первом выражении (X) заменяем формулу на:
  • Во втором выражении (Y) заменяем формулу на:
  • Третье выражение вообще удаляем
  • У первого выражения (X) снова пропишем Цвет фона («Background Color») согласно нашей придуманной раскраске для каждого типа:
  1. На вкладке Presentation:
  • Убираем галочку Значения на графике («Labels on Datapoints»)
  • Сделаем Ширина линии («Line Width») = 1.

Последний штрих – убираем рабочие слои на задний план:

  • Верхний объект с линиями переместить на самый нижний план (Слой (Layer=-3)),
  • Следующий объект с надписями переместить на (Layer=-2)
  • Тогда сам объект, который рисует круги окажется на самом верху и на нём можно, как обычно, мышкой делать выборки.

Вот теперь наш пример с объёмным сравнением и динамическими сносками полностью готов!

QlikView Bubble Chart

Поделитесь своим мнением о такой реализации в комментариях. Буду благодарен.

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

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

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

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

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

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

Подпишись!