Альманах визуализации, выпуск №1/6: Круговая диаграмма QlikView… лишь наполовину

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

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

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

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

Нестандартные задумки требуют нестандартных решений. И QlikView позволяет такие необычные решения реализовать.

Итак, предположим у нас есть четыре расчетные группы, значения которых мы решили представить в виде полукольца! Давайте посмотрим, как имея в инструментах QlikView стандартный объект «Круговая диаграмма» реализовать эту задумку.

В качестве бонуса сегодня я также покажу, как сделать небольшие «прожилки» между основными данными в полукольце.

Этап 1. Исходные данные и круговая диаграмма QlikView

 

  1. Пусть у нас есть такая таблица с данными:

CIRCLE_GROUP, CIRCLE_MONTH, CIRCLE_SUMMA
group-1, 31.08.2014, 120

 group-2, 31.08.2014, 200,
group-3, 31.08.2014, 165

 group-4, 31.08.2014,

 и далее, для тех же четырёх групп ещё данные для нескольких месяцев.

  1. Создадим пару вспомогательных переменных:
  • vSpaceSize = 3

Это ширина «зазора» между данными в диаграмме (в градусах), которую потом можно менять динамически

  • vAllSum = =SUM(CIRCLE_SUMMA)

Это переменная, которая высчитывает текущую общую сумму по всем группам.

  1. Начнем с создания объекта Диаграмма — «Круговая диаграмма» (Chart – Pie Chart).
  • Вторую вкладку «Измерения» (Dimensions) сразу пропускаем – на ней никакого дименшина указывать не надо.
  • На следующей вкладке «Выражения» (Expressions) начинаем создавать выражения.

Первое выражение:

которое назовем «group1» (впишем в «Метка» / Label).

Свойства диаграммы QlikView

Этап 2. Полукруговая диаграмма в QlikView по шагам

Итак, в чем же идея полукруглой диаграммы? Идея привести все суммы групп к диапазону 180 градусов, за вычетом суммы всех «зазоров» (поэтому ширина зазора дается в градусах).

Теперь продолжим наши модификации.

  1. Создадим второе выражение на вкладке «Выражения» (Expressions) – это будет зазор:

=vSpaceSize

Назовем его «space1» (впишем в «Метку» / Label).Свойства диаграммы QlikView

  1. Далее создаем аналогично остальные выражения, чередуя:
    «group2», «space2» ;   «group3», «space3» ; …

После выражения с последней группой «group4» зазор уже делать не надо, зато надо сделать «заглушку» на 180 градусов. т.е. в последнем выражении надо прописать просто константу:
=180

Получится изначально как на скриншоте ниже:

Круговая диаграмма QlikView

  1. Выполним косметические настройки:
  • Отключаем бордюр и заголовок объекта.
  • На вкладке Общие (General): отключаем галочку: «Показывать заголовок диаграммы» (Show Title in Chart).
  • На вкладке Стиль (Style): Выбираем узкое кольцо.
  • На вкладке Представление (Presentation):
    • Отключаем галочки «Всплывающие метки» (Pop-up labels) и «Подсветка» (Highlight).
    • Отключаем показ легенды «Показывать легенду» (Show Legend).

И получаем:

 Pie Chart QlikView

  1. Закрепим за каждой группой определенный цвет: На вкладке «Выражения» (Expressions) раскрываем + у каждого выражения и прописываем цвет в «Цвет фона» (Background Color):
  • для «group1»: RGB(141,170,203)
  • для «group2»: RGB(187,216,34)
  • для «group3»: RGB(231,138,210)
  • для «group4»: RGB(105,84,150)Свойства диаграммы QlikView
  1. Теперь поработаем с «зазорами»:
  • Все там же, на вкладке Выражения (Expressions), раскрываем + у каждого выражения и прописываем цвет в «Цвет фона» (Background Color) для всех зазоров и для последнего выражения: RGB(255,255,255).
  • Получаем:Круговая диаграмма QlikView
  • Пробуем повыбирать разные комбинации групп и увидим, что сейчас зазоры показываются всегда, хотя должны отрисовываться, только тогда, когда они нужны.
    Поэтому доработаем все наши выражения для зазоров:
  • Формулу для выражения space1:
    =IF( group1>0
    AND RangeSum(group2,group3,group4)>0,  vSpaceSize, 0)
  • Формула для выражения space 2:
    =IF( group2>0
    AND RangeSum(group3,group4)>0,  vSpaceSize, 0)
  • Формула для выражения space3:
    =IF( group3>

               AND group4>0,  vSpaceSize, 0

  • Проверим, что теперь, при любых комбинациях выборки групп зазоры встают на свои места:Круговая диаграмма QlikView
  1. Перейдем к надписям на диаграмме

Если мы просто включим галочки «Значения на точках диаграммы» (Values on Data Points) на вкладке «Выражения» (Expressions) у всех выражений group1, group2, group3 и group4, то увидим лишь
пересчитанные значения сумм групп к 180 градусам.

Для выражений на вкладке «Число» (Number) не будем менять настройки «Форматировать формат цифр» (Number Format Settings), а оставим как есть «Выражение по умолчанию» (Expression Default). В этом случаем мы можем доработать наши формулы для групп с использованием функции DUAL,
которая позволит нам для рисования сегмента использовать преобразованное
значение, а метки к нему выводить какие угодно.

  • Изменим наше выражение для «group1»:

Как видим, при использовании функции DUAL мы связываем любую текстовую

  • информацию (первый параметр функции) с любой числовой (второй параметр). В результате на диаграмме текстовая информация показывается как надписи,
    а числовая определяет размер сегмента.
  • Аналогичные выражения пропишем и для оставшихся групп и получим:Круговая диаграмма QlikView
  1. Пропишем условие отображения группы, если она
    не входит в текущий фильтр.
  • Для выражения «group1» надо включить
    галочку «Условие» (Conditional) и прописать условие показа:

    Match(group-1, @(=CONCAT(distinct CIRCLE_GROUP,chr(39)&,&chr(39))))

  • Аналогичные условия прописываем и для остальных групп.
  1. Создаем текстовый объект, закрываем им правую половину круга.
  1. Разместим линии сносок, добавив
    простую строку ●─── &   перед Num (в первый параметр функции DUAL).
    Можно также поэкспериментировать со шрифтом для отображения сносок:
    например, взять Arial как в данном примере.

В итоге получаем:

Круговая диаграмма QlikView

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

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

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

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

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

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

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

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

Подпишись!