Сегодня рассмотрим необычное использование объекта «Диаграмма радар» (Chart – Radar Chart) для отображения неких величин пропорциональным количеством полосок по секторам.
Диаграмма радар или роза ветров в QlikView
Итак, что нам для этого нужно:
- Нам потребуется определиться, сколько секторов будем отображать на «радаре». Эту величину пока зафиксируем. Пусть это будет 12 секторов. Для этого потребуется вспомогательная таблица, не связанная с другими таблицами. Поэтому в скрипте надо написать следующее:
1 2 3 |
_СЕГМЕНТЫ: LOAD RowNo() as _СЕГМЕНТ AUTOGENERATE 12; |
- Зададим переменную, которая будет говорить, сколько максимально полосок можно рисовать в одном сегменте.
1 |
LET vCountLevels = 18; |
- Создадим ещё одну вспомогательную таблицу, в этот раз для полосок:
12_LEVELS:LOAD RowNo() as _LEVEL AUTOGENERATE 26; - Ну и пусть у нас есть вот такая таблица исходных данных:
1234567DATA_GROUP, DATA_VAR, DATA_SUMMA`group-1`, `1’, 28`group-2`, `5`, 15`group-3`, `12`, 7'
в которой для каждой из группы есть 12 разных DATA_VAR с какими-то данными.
Создание объекта «Диаграмма радар»:
- Начнем с создания объекта Диаграмма «Диаграмма радар» (Chart – Radar Chart).
- На вкладке «Измерения» (Dimensions) укажем первый расчетный дименшин по формуле:
1=IF( _СЕГМЕНТ<=12, _СЕГМЕНТ)
- Тут же, на вкладке «Измерения» (Dimensions), указываем второй дименшин – просто поле:
1_LEVEL
- На вкладке «Выражение» (Expression) указываем всего одно выражение:
1SUM(_LEVEL)
- Таким образом, мы для каждого нашего фиксированного уровня «_LEVEL» рисуем круговую линию одинакового значения «SUM(_LEVEL)». Получаем такую визуализацию:
Теперь сама идея:
Мы будем управлять закраской сегментов в зависимости от наших рассчитанных значений для каждого сегмента, «скрывая» полоски — просто делая их белыми (или прозрачными).
- Для этого на той же вкладке «Выражение» (Expression) раскроем
+
у нашего выражения и в «Цвет фона» (Background Color) напишем следующую формулу:
1 2 3 4 5 6 |
IF( _LEVEL<=Round( vCountLevels*SUM(IF(DATA_VAR=_СЕГМЕНТ, DATA_SUMMA)) MAX(total AGGR(SUM(DATA_SUMMA),DATA_VAR)), 1) ColorMix1((_LEVEL-1)/(vCountLevels-1),RGB(255,200,155),RGB(57,130,172)) ARGB(0,255,255,255) ) |
Сейчас мы применили первый способ закраски — «градиент закраски от центра», используя функцию ColorMix1 и получили следующее:
- Далее выполним косметические настройки:
- На вкладке «Представление» (Presentation)
- Выключим галочку «Показать легенду» (Show Legend)
- Увеличим ширину линии «Ширина линии» (Line Width) до 6.
- Выключим все галочки «Всплывающие метки» (Pop-Up Labels), «Подсветка» (Highlight), «Скрыть нулевые значения» (Suppress Zero-Values) и «Скрыть отсутствующие» (Suppress Missing).
B. На вкладке «Общие» (General)
- Уберем галочку «Показывать заголовок в диаграмме» (Show title in chart)
- Включим галочку «Только чтение» (Read Only)
- Включаем все три галочки в блоке «Масштаб» (Scale) и присвоим:
«Стат. Мин.»(Static Min) = 0
«Стат. Макс.» (Static Max) = vCountLevels
«Стат. Шаг» (Static Step) = 1
- Получаем следующее:
- Здесь же, на вкладке «Оси» (Presentation – Axes) зайдем в настройки шрифта выводимых надписей на графике (кнопка «Шрифт» (Font) блока «Оси выражений» (Expression Axes)):
- Там же далее зайдем в настройки цвета выводимых надписей («Цвет» — Color) и сделаем цвет прозрачным.
- Отключим рамку и заголовок и получим:
- Теперь отвлечемся, и я расскажу дополнительно, как просто сделать опцию, которой можно управлять дополнительными параметрами, например, показывать или нет «риски» на графике.
- Как задать опцию через переменную, знают все, а мы сделаем её через одиночное поле таблицы:
1 2 3 |
_OPTIONS: LOAD `показывать радиальные риски` as _SHOW_HYPHEN Autogenerate 1; |
- Теперь просто создаем обычный «Список» (List Box).
- Указываем в качестве «Поля» (Field) наше новое поле «_SHOW_HYPHEN».
- На вкладке «Представление» (Presentation) стиль выбора «Переопределение стиля» (Selection Style Override) указываем как «Переключатели окон» (Windows Checkboxes).
- Убираем заголовок
- Получаем:
- Теперь нам нужно, чтобы опция стала действительно управлять показом «рисок» на графике. Для этого на вкладке «Оси» (Axes) войдем в настройки цвета «Цвет оси» (Axis Color) блока «Оси выражения» (Expression Axes) выберем «Базовый цвет» -> «Вычисляемый» (Base Color -> Calculated) и в качестве выражения пропишем:
1 |
IF( GetSelectedCount(_SHOW_HYPHEN)=1, RGB(200,200,200), RGB(255,255,255)) |
- Если нужно скрыть разделительные линии между секторами и разделить сектора белыми линиями, то, так как у нас количество секторов зафиксировано, можно просто создать и разместить поверх диаграммы такие белые линии нужной толщины. Получится как в начальном примере.
- Будет также удобно сделать надписи по кругу около каждого сектора. Вот один из простых способов для этого:
- Возьмем стандартный объект Диаграмма — «Круговая диаграмма» (Chart – Pie Chart).
- При создании чарта на первой вкладке «Общие» (General):
- На вкладке «Измерения» (Dimensions) добавляем всего один вычисляемый дименшин, который даст на нашем круге 12 позиций для надписей:
1 |
=IF( _СЕГМЕНТ<=12, _СЕГМЕНТ) |
- На следующей вкладке «Выражения» (Expression) создаем следующее выражение:
1 |
DUAL( Num( SUM(IF(DATA_VAR=_СЕГМЕНТ, DATA_SUMMA)),`###0`), 1/12) |
- На вкладке «Выражения» (Expression) включим галочку «Значения на точках графика» (Values on data points)
- На вкладке Стиль (Style) обязательно выберем стиль отображения «Вид» (Look) – самый верхний левый угол:
- На вкладке Цвета (Colors) делаем фон прозрачным, переведем ползунок «Прозрачность» (Transparency) в положение 100% и все цвета с 1 по 12 также сделаем прозрачными.
- На вкладке Представление (Presentation) выключим галочки «Всплывающие метки» (Pop-Up Labels) и «Подсветка» (Highlight) и получаем:
- Теперь осталось только отключить заголовок и бордюр, выбрать подходящий шрифт для наших цифр, их размер и всё это совместить с имеющейся диаграммой по линиям. Получится так:
- Если необходимо скрыть и внешнюю черную рамку круга, это можно сделать, создав обычный «Текст» объект, у которого:
- убрать заголовок
- установить прозрачный фон
- включить скругление всех четырех углов
- выбрать вид скругления «Relative» =100%
- покрасить цвет бордюра в белый
- назначить толщину бордюра = 3.
И вот, наш пример будет готов!
Комментируйте и делитесь своим мнением ниже!
А могли бы вы показать скриншот рабочей формулы ?
Для этого на той же вкладке «Выражение» (Expression) раскроем
+
у нашего выражения и в «Цвет фона» (Background Color) напишем следующую формулу:IF( _LEVEL<=Round( vCountLevels*SUM(IF(DATA_VAR=_СЕГМЕНТ, DATA_SUMMA)) MAX(total AGGR(SUM(DATA_SUMMA),DATA_VAR)), 1)
ColorMix1((_LEVEL-1)/(vCountLevels-1),RGB(255,200,155),RGB(57,130,172))
ARGB(0,255,255,255)
)
Здесь пропущены некоторые символы.
Марина, добрый день! В полном списке первого выпуская альманаха визуализации QlikView есть qvw-файл, вы можете его скачать и посмотреть все формулы в деталях.