вторник, 2 октября 2012 г.

Метки на столбчатых диаграммах


Очень часто на диаграмму мы добавляем   точное значение показателя. Этот пост напомнит о том, как это можно сделать и как расположить данные так, что бы цифры не наползали друг на друга. 
Красиво и элегантно. Идея для исследования описанных свойств пришли после прочтения поста  на  QVApps blogs.
Что бы сделать добавить значение выражение на диаграмму  достаточно  активировать свойство Value on Data Point (закладка Expressions, блок Display Options

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

В таком случае значения показателя можно расположить по вертикали,  непосредственно на столбцах!  Для этого  достаточно активировать свойства  Vertical  и  Plot Value Inside Segment на закладке  Presentation.
 
Получаем более наглядную  диаграмму: 
 
Однако, теперь потерялись  значения для товаров, продажи которых не так значительны.
Пока оставим как есть и попробуем добавить не значение,  а название измерения (сэкономим  место в нижней  части диаграммы, его часто не хватает).

Для начала на закладке Dimension  снимаем признак  Show Legend  и изменяем значение нашего ВЫРАЖЕНИЯ  следующим образом:  dual(Наименование, sum(Количество))

Таким образом, благодаря использованию функции dual наш показатель имеет 2 значение текстовое - название товара (оно, очевидно, совпадает с  измерением) и числовое (sum(Количество) )  и диаграмма примет такой вид:

Что бы добавить значение выражения на диаграмму  изменим функцию  - просто добавим числовое значение выражения к его текстовому  значению: 
            dual(Наименование & ' -  ' & sum(Количество), sum(Количество))

Получаем:  

Теперь вернемся к пропущенным значением.  Попробуем и их вернуть на график, воспользуемся предложением от автора QVApps blogs

Для этого изменим тип диаграммы на   Combo Chart   и  разобьем наше выражением на два :

Добавим  новое выражение   -    sum(Количество)  - расчет значения нашего показателя.   Для нового выражения не забудем снять признак  Value on Data Point , это выражение должно  иметь только графический образ  - столбец (в списке Display  Option  должна быть активна только опция  Bar - столбец.
 
Для того, что бы получить второе выражение просто  изменим наше предыдущее выражение следующим образом 
                    dual(Наименование & ' -  ' & sum(Количество), 0.05)   -
мы поменяли числовое значение нашего выражения - оно всегда будет равно 0.05 .

В общем-то, как Вы уже догадались,  это может быть любое число, которое бы максимально приблизило точку к оси Х.  В списке Display Option нужно выбрать   Symbol.  Как Вы догадались, в этом выражении нам будет интересно только текстовое значение выражение, поэтому опция Values  on Point должна быть активна. Признаки отображения  значения вертикально  на закладке Presentation должны уже быть активированы на предыдущих шагах (см. выше).

Что бы избежать  линии точек неясного происхождения на нашей диаграмме просто активируем опцию  Invisible (закладка Expression).  Интересный эффект, графика нет, а значения показателей на графике остались. 
 
Наша диаграмма преобразиться следующим образом:
 
Кстати, небольшие  эксперименты со свойствами показали, что для нашего второго измерения тип линии может  быть не только  char, но и line  (главное что бы не bar).



Несколько комментариев и замечаний из обсуждения функционала  на  http://blog.qvapps.com/2010/09/10/qlikview-tutorial- vertical-labels-inside-bars/    

Note1:  Если Ваши пользователи будут экспортировать диаграмму в Excel, то второе измерение, увы, станет  видимым и его придется удалять из файла вручную.  


Note2:  Если Вы выбрали горизонтальное расположение столбцов, то можно просто снять свойство Vertical (закладка Presentation)


 
В результате график будет выглядеть так

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

                     dual(Наименование & ' -  ' & sum(Количество), max(TOTAL Количество)/5)


Только не надо  писать:
             dual(Наименование & ' -  ' & sum(Количество), max(TOTAL Количество)),

а то текст "уползет".  Хотя для отображения только числовых значений вполне себе подойдет.



  

Note 3:   Если измерение является Drill/Cycle Group , то эффективно использовать следующее  выражение.

              Dual( $(= GetCurrentField(“NewGroup”)) & ‘ (‘ & sum(Qty) &’)', sum(0.1)) 


1 комментарий:

  1. Спасибо, очень полезная статья. В одном источнике собраны, самые актуальные приемы по настройки отображения значений на гистограмме. Уже пригодилось на практике.

    ОтветитьУдалить