Продолжая публикации на тему тепловых карт, сегодня расскажу, как создать двухцветный градиент в тепловой карте с помощью функции ColorMix1, ColorMix2 и ColorMixWizard.
Я буду использовать тот же пример, что и в первой части поста, с погодой по странам и городам для отдыха.
Как работает ColorMix1
Функция ColorMix1 (value, ColorMin, ColorMax) возвращает представление цвета RGB для двухцветного градиента на основе значения value от 0 до 1.
Если значение value = 0, то возвращается первый цвет.
Если значение value = 1, то возвращается второй цвет.
Если 0 < value < 1, то возвращается соответствующий промежуточный оттенок.
ColorMin – это действительное представление RGB для цвета, который будет связан с нижним пределом интервала.
ColorMix – это действительное представление RGB для цвета, который будет связан с верхним пределом интервала.
Colormix1: двухцветный градиент по всем данным
Допустим, мы хотим узнать, в каких странах из всего списка стран и городов жарче всего. Для этого построим двухцветный градиент в ячейках диаграммы на основании значений температур в городах за 12 месяцев (минимальное значение температуры по всем данным таблицы — зеленый цвет, максимальное — красный цвет).
Для этого выполним следующее:
- Откроем окно «Edit Expression» для атрибута «Background Color».
- Запишем выражение, используя функцию ColorMix1:
1 2 3 4 5 6 |
ColorMix1( (only(Температура) - min({1} total Температура)) / (max({1} total Температура)-min({1} total Температура)), ARGB(255, 0, 255, 0), ARGB(255, 255, 0, 0) ) |
- Нажмем кнопку OK в окне Edit Expression и кнопку ОК в окне Chart Properties, чтобы применить изменения к диаграмме. Результат окрашивания ячеек показан на Рис. 4. Все ячейки окрашены соответствующими цветами градиента — самая высокая температура (+36,3, город Шарм-эш-Шейх, август) обозначена ярким красным цветом, а самая низкая температура (-7,2, город Клагенфурт, январь) определена ярким зеленым цветом. Остальные ячейки окрашены промежуточными оттенками красного и зеленого цветов.
Отмечу, что такое отображение удобно далеко не всегда, поскольку человеческий глаз лучше всего воспринимает контрастные цвета на тепловых картах, например, черный и белый, зеленый и красный, но без градиента.
Colormix Wizard: градиент отдельно для каждой колонки
Теперь, как и в первой части поста, мы определились с месяцем отпуска (май) и хотим выбрать наиболее комфортную для нас страну пребывания. Построим двухцветные градиенты на основании значений температур в городах за каждый месяц в отдельности (минимальное значение температуры по каждому месяцу – зеленый цвет, максимальное – красный цвет).
Для атрибута «Background Color» с помощью функционала Colormix Wizard автоматически сформируем выражение на основе функции ColorMix1. Для этого выполним следующее:
Выполним следующее:
- Откроем окно Edit Expression для атрибута «Background Color».
- С помощью функционала Colormix Wizard автоматически сформируем выражение на основе функции ColorMix1. Для этого в окне «Edit Expression» выберем пункт меню File -> Colormix Wizard….
- Появится окно «Colormix Wizard». Нажмем кнопку Next, чтобы перейти в окно первого диалога. В поле Value Expression введем выражение для вычисления цвета в каждой ячейке: Only(Температура).
- Нажмем кнопку Next, чтобы перейти на следующую страницу диалога.
- В окне Step 2 нажмем кнопку Reverse, чтобы установить красный цвет в качестве верхней границы, а зеленый – в качестве нижней границы.
- Нажмем последовательно кнопки Next и Finish. Функционал Colormix Wizard автоматически сгенерирует в окне Edit Expression выражение для цвета ячеек:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
ColorMix1 ( ( 1 + Sign( 2*(Only(Температура)-RangeMin (top(total Only(Температура),1,NoOfRows(total)))) / (RangeMax (top(total Only(Температура),1,NoOfRows(total)))-RangeMin (top(total Only(Температура),1,NoOfRows(total)))) - 1 ) * Sqrt( Fabs( (2*(Only(Температура)-RangeMin (top(total Only(Температура),1,NoOfRows(total)))) / (RangeMax (top(total Only(Температура),1,NoOfRows(total)))-RangeMin (top(total Only(Температура),1,NoOfRows(total)))) -1 ) ) ) ) /2, ARGB(255, 0, 255, 0), ARGB(255, 255, 0, 0) ) |
- Нажмем кнопку OK в окне Edit Expression и кнопку ОК в окне Chart Properties, чтобы применить изменения к диаграмме. Вот наш результат окрашивания ячеек:
Вариант получился интересный, но на мой вкус, градиент здесь дает больший диапазон для выбора, чем в примере с IF.
Как работает ColorMix2
Функция ColorMix2 (value, ColorMin, ColorMax, ColorZero) возвращает представление цвета RGB для двухцветного градиента с возможностью указания промежуточного цвета для центральной позиции на основе значения value от -1 до 1.
Если значение value = -1, то возвращается первый цвет.
Если значение value = 1, то возвращается второй цвет.
Если -1 < value < 1, то возвращается соответствующий промежуточный оттенок.
ColorMin – это действительное представление RGB для цвета, который будет связан с нижним пределом интервала.
ColorMix – это действительное представление RGB для цвета, который будет связан с верхним пределом интервала.
ColorZero – это действительное представление цвета RGB, который будет связан с центром интервала.
ColorMix2: двухцветный градиент для каждой колонки с указанием промежуточного цвета
Допустим, нам важно выявить город со средней температурой из стран всего списка в разбивке по месяцам. Построим двухцветные градиенты с выделением центрального интервала в ячейках диаграммы за каждый месяц в отдельности (минимальное значение температуры по каждому месяцу – зеленый цвет, максимальное – красный цвет, центральный интервал – желтый цвет).
Для атрибута «Background Color» с помощью функционала Colormix Wizard автоматически сформируем выражение на основе функции ColorMix2. Для этого выполним следующее:
- В диалоговом окне Edit Expression выберем пункт меню File -> Colormix Wizard ..
- Появится окно Colormix Wizard. Нажмем кнопку Next, чтобы перейти в окно первого диалога. В поле «Value Expression» введем выражение для вычисления цвета в каждой ячейке: Only(Температура).
- Нажмем кнопку Next, чтобы перейти в окно второго диалога. Щелкнем на кнопке Reverse, чтобы установить красный цвет в качестве верхней границы, а зеленый – в качестве нижней границы. Установим флаг в поле «Intermediate» и введем центральное значение температуры, например 21.
- Нажмем последовательно кнопки Next и Finish. Функционал Colormix Wizard автоматически сгенерирует в окне «Edit Expression» выражение для цвета ячеек:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
ColorMix2( if( Only(Температура)<21,-Sqrt(-(Only(Температура)-21) / (21-RangeMin (top(total Only(Температура),1,NoOfRows(total))))), Sqrt((Only(Температура)-21) / (RangeMax (top(total Only(Температура),1,NoOfRows(total)))-21))), ARGB(255, 0, 255, 0), ARGB(255, 255, 0, 0), ARGB(255, 255, 255, 0) ) |
- Нажмем кнопку OK в окне Edit Expression и кнопку ОК в окне Chart Properties, чтобы применить изменения к диаграмме. Результат окрашивания ячеек:
На диаграмме по столбцам все ячейки окрашены соответствующими цветами градиента с выделением центрального интервала +21. Так, в январе самая высокая температура (+31,8, город Пхукет) обозначена ярким красным цветом, самая низкая температура (-7,2, город Клагенфурт) определена ярким зеленым цветом, а центральный интервал (+21,1, города Варадеро и Гавана) окрашены желтым цветом. Остальные ячейки окрашены промежуточными оттенками:
- красного и желтого цветов,
- зеленого и желтого цветов.
На этом все. Как видно из примеров для каждого показателя диаграммы QlikView можно настроить цвета, которые задаются в атрибуте показателя «Background Color» в виде выражения.
P.S.
Кому интересно, то в итоге мы поехали всей дружной компанией на Гоа, как я и хотела. Ну и как фанат QlikView, считаю, что моя тепловая карта сыграла в этом не последнюю роль – мои друзья быстро посмотрели данные карты температур, и мы в тот же день забронировали билеты. А уже через неделю купались в чистейших водах Индийского океана и отдыхали на безграничных песчаных пляжах, но это уже совсем другая история…
Оставляйте свои комментарии и рассказывайте, как вы используете тепловые карты.
[emaillocker]
Cкачивайте демо-приложение QlikView HeatMap, чтобы лучше разобраться!
[/emaillocker]
Свежие комментарии