Альманах визуализации, выпуск №2/4. Динамические сноски на диаграмме в QlikView

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

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

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

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

Вернемся к теме управления сносками в динамике. В «Развлекаемся с гистограммами в QlikView: овальные столбцы» я уже рассказывал, как работать с динамическими диаграммами. Но в этот раз сноски будут на круговой диаграмме.

О чем пост:

Сегодня мы научимся позиционировать сноски точно на свой сегмент круговой диаграммы.

Зачем пост:

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

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

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

Так же нам необходимо в скрипте создать две вспомогательные таблицы:

И

Построение Pie Chart

  1. Создаем круговую диаграмму, объект Pie Chart.
  2. В качестве дименшина укажем: TYPE,
  3. На вкладке Выражения («Expressions») введём выражение:

 И получим:SUM(Value) QlikView

  1. Остаемся здесь же, на вкладке Выражения (Expressions). Раскроем {+} у выражения и в Цвет фона («Background Color») пропишем фиксированный цвет для каждой группы:

  1. На вкладке Стиль (Style) выберем стиль диаграммы «Тонкое плоское кольцо».
  2. На вкладке Основные (General) отключим галочку «Показать заголовок диаграммы» («Show Title in Chart»).
  3. Отключим границы и заголовок
  4. На вкладке Сортировка («Sort») обязательно надо сделать сортировку отрисовки сегментов строго в задуманном порядке. Для этого включим одну лишь галочку Выражение («Expression») и введем такое выражение:

Теперь выбираем нужный размер диаграммы и расположение легенды на ней. Например, так:Pie Chart QlikView

Процесс создания сносок

Теперь можно приступать к построению сносок. Вот тут-то нам и пригодятся, созданные ранее независимые таблицы: «_ЛИНИИ» и «_КОЛОНКИ». 

Идея заключается в следующем: На созданную круговую диаграмму наложим Пузырьковую диаграмму. На вход для рисования в Пузырьковой диаграмме («Scatter Chart»)  мы дименшинами подаем количество линий, которые мы собираемся рисовать и количество точек, из которых будет состоять каждая линия, а в качестве координат этих самых точек для линий будут вычисляемые формулы первого и второго выражения «Expression».

Итак, приступим с самому интересному:

  1. Создадим новый объект Пузырьковая диаграмма («Scatter Chart»), где
  • В качестве первого дименшина нажмем расчетный и введем:
    =IF( _ТОЧКА<=3, _ТОЧКА)
  • В качестве второго дименшина — тоже укажем расчетный и введем:
    =IF( _ЛИНИЯ<=5, _ЛИНИЯ)
  • Нажмем далее и на следующей вкладке включим галочку: Продвинутый режим («Advanced Mode»).
  • Вернёмся назад, на вкладку Выражения («Expressions»), (кнопка «Назад»). Как видим два выражения уже окажутся созданными, но нам их придется переделать (об этом ниже).
  • На вкладке Цвет («Color») сделаем фон прозрачным, чтобы при построении сносок видеть нашу диаграмму:
    • Передвинем ползунок Прозрачность («Transparency») на 100%,
    • Поднимем уровень Слой (Layer) до Верх («Top») (на вкладке Макет («Layout»).

Получаем:Pie Chart QlikView

  1. Теперь нам нужно изменить уже созданные выражения на свои, в соответствии с нашей идеей.
  • В первом выражении изменим формулу на следующую:

и назовем его «x» (в поле ввода Метка («Label»)).

  • Второе выражение также изменим на свою формулу

и назовем его «y» (в поле ввода Метка («Label»)).

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

Pie Chart QlikView

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

  1. Теперь нужно настроить верный масштаб. Масштаб выбирается примерно, но сопоставим с планируемыми размерами объекта со сносками, поэтому:
  • На вкладке Оси (Axes):
    • для X координаты включим и пропишем Стат. макс. («Static Max»)=125, Стат.мин. («Static Min»)=0
    • для Y координаты соответственно Стат.макс. («Static Max»)=100, Стат. мин. («Static Min»)=0.
    • Устанавливаем галочки Скрыть ось («Hide Axis») для обоих осей.
  • На вкладке Представление (Presentation):
    • Уменьшаем ширину линии до 1 (Ширина линии («Line Width»)=1)
    • Отключаем галочку Показывать легенду («Show Legend»).
  • На вкладке Цвета (Colors): Для первых пяти цветов делаем цвет линий черным.
  • На вкладке General:
    • Отключаем галочку Показывать заголовок диаграммы («Show Title in Chart»)
    • Включаем Только чтение («Read Only»).

После этих настроек получаем:
Pie Chart QlikView

  1. Косметические исправления:
  • Отключаем заголовок
  • Отключаем границы
  • Растягиваем объект так, чтобы перекрестье попало точно в центр нашего кольца, а указатели сносок указывали внутрь сегментов на одинаковом расстоянии от внешней границы большей окружности.Pie Chart QlikView
  1. Вот, в принципе, наши динамические сноски готовы. Если предполагается, что на диаграмме всегда будут отображаться все три группы, то на этом можно закончить построение, но если есть вероятность, что количество групп может быть ограничено фильтрами, тогда нужно ещё кое-что доделать
  2. Надо сделать так, что когда группа не выбрана в текущем фильтре, то и соответствующая ей сноска не рисуется вообще. Для этого на вкладке Выражения («Expressions») доработаем наши выражения с учетом этих условий:
  • Для первой линии перед Pick добавим условие:
  • Для второй линии перед Pick добавим условие:
  • Для третьей линии перед Pick добавим условие:

ну и по одной закрывающей скобочке в конце каждой такой линии.

  • Эти три условия надо прописать и для «x» и для «у» выражений.
  1. В заключении уберём две вспомогательные линии, из которых сделано «перекрестье». Для этого на вкладке Измерения («Dimensions») у второго дименшина цифру 5 в его формуле заменим на 3.
  2. Ну а метки, отображающие величины над сносками, думаю, вы сможете добавить самостоятельно, только так же не забывайте, что и их надо тоже скрывать, когда их группа не попадает в текущий фильтр. т.е. у этих меток на вкладке Макет («Layout») надо прописать Условие («Conditional») по аналогии — вот такое условие показа:

Вот теперь все получилось: Pie Chart QlikViewХороших вам задумок и удачной реализации!

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

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

Комментарии

  • Ноябрь 8, 2016 at 16:03
    Permalink

    Здравствуйте!

    Можно ли на круговой диаграмме в QlikView вывести значение внутри сегментов так, как это возможно в столбчатых диаграммах?

    Ответить
  • Ноябрь 9, 2016 at 10:36
    Permalink

    Спасибо!
    Когда я могу ожидать ответ на комментарий?

    Доставлено с помощью Postmatic .

    Ответить
    • Ноябрь 9, 2016 at 12:14
      Permalink

      Добрый день. В стандартном PieChart объекта клика — нельзя. Но если очень хочется, то такое можно реализовать наложив друг на друга два разных PieChart. Тот, что будет «сверху», должен быть чуть меньше диаметром, но отцентрирован с нижним. Кроме того, у верхнего делается прозрачным и фон и BackgroundColor отрисовки. Вобщем — остаётся вывод только самих цифр на окружности. Но а так как он меньшего размера, то цифры окажутся внутри сегментов нижней диаграммы.

      Ответить

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

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

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

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

Подпишись!