вторник, 10 июня 2014 г.

Как сделать диаграмму Спидометр LibreOffice Calc

Многие скажут, что нет необходимости в диаграмме спидометр. Наверное, они будут по-своему правы. Но на мой взгляд, эта диаграмма не только красива и понятна, но и развивает наше видение создания сложных интерактивных объектов в LibreOffice, которое нам необходимо при решении нетипичных задач. Я постараюсь ясно и подробно описать все нюансы создания этой диаграммы, но так как «совершенству нет пределов», прошу не стесняться задавать вопросы, если я что-нибудь упущу.
Диаграмма спидометр в LibreOffice Calc строится на основе круговой диаграммы. И если вы не знакомы с построением этих диаграмм, я бы рекомендовал вам прочесть сначала статью «Создание круговых диаграмм при помощи мастера диаграмм в LibreOffice Calc». Эти знания позволят нам не останавливаться слишком подробно на тех вещах, которые уже описаны, а сосредоточиться только на необходимых. Начнём с простого обычного примера.

Создание простой диаграммы спидометр

Для того, чтобы показать создание диаграммы спидометр в LibreOffice возьмём простой пример — заполнение склада. Создадим таблицу такого вида:

Таблица для диаграммы спидометр в LibreOffice Calc

В этой таблице в ячейке A2 процент заполнения склада. Столбец B нам понадобится, чтобы построить окружность спидометра. В нём ячейка B2 задаёт нижнюю часть, а ячейки B3:B5 задают три деления на спидометре сверху. Так как полный оборот - это 360 градусов, то нам будет удобнее, если сумма значений этих ячеек составит 360. Столбец C служит для создания стрелки. В нём ячейка C2 будет заполнять нижнюю часть как и в предыдущем случае, ячейка C3 задаёт отступ стрелки от левого края, C4 — толщину стрелки, а C5 — остаток до правого края. Для того, чтобы не считать всё руками каждый раз, когда нам хочется отредактировать что-нибудь, предлагаю выразить значения ячеек столбца C формулами. А в столбце D находятся подписи для легенды. Нужно заметить, что ячейка D2 не пустая, там вбит пробел. Таблица с формулами будет выглядеть так:

Таблица с формулами для диаграммы спидометр в LibreOffice Calc

Объясню формулы. У нашего спидометра две части, верхняя и нижняя, разделённые пополам. Нижняя будет обесцвечена, а верхнюю мы делим на три равные части для простоты восприятия. Но спидометр может быть разделен не пополам, нижняя часть может быть меньше шкалы. Что бы после создания диаграммы вы могли поэкспериментировать, я и предлагаю связать все формулами. Поэтому, в столбце B с третьей ячейки по пятую стоит =(360-$B$2)/3.
Диаграмма, которая будет отображать стрелку, также условно разделена на 2 части. Нижняя часть должна быть равна нижней части спидометра, поэтому в C2 стоит формула =B2. Верхняя часть, которая показывает процент заполнения, должна быть равна шкале спидометра, поэтому мы используем SUM(). В C3 у нас левая часть спидометра, поэтому, мы размер шкалы умножаем на занятость склада и вычитаем пол толщины стрелки, а в C5 — остаток, который должен получиться после вычитания заполненности склада на спидометре и половины размера стрелки. Поэтому в C3 мы вносим =SUM(B3:B5)*A2-C4/2, а в C5 — =SUM(B3:B5)-C3-C4/2.
Теперь приступим к созданию самой диаграммы. Выделите диапазон B2:B5, запустите мастер диаграмм. На первом шаге нам нужно выбрать тип диаграммы «Круговая» и подтип «Вложенная круговая». Для этого примера на втором шаге нам делать нечего, переходим сразу на третий. На третьем шаге нам нужно заполнить поле «Категории». Нажимаем кнопку рядом с полем и выделяем диапазон D2:D5. Переходим на следующий шаг. На четвёртом шаге мы указываем заголовок диаграммы. И нажимаем кнопку «Готово».
Не выходя из редактора диаграмм, выделим ряды данных и нажмём на них правой кнопкой мыши, выберем в меню «Формат рядов данных...»

Скриншот заготовки для простой диаграммы спидометр в LibreOffice Calc

В открывшемся окне на вкладке «Параметры» в разделе «Начальный угол» выставляем значение 180 градусов и ставим галочку «Включить скрытые ячейки», что поможет нам потом скрыть служебные диапазоны. Подтверждаем выбор нажав кнопку «Да».
Выделяем нижний сегмент (синий) и, кликнув по нему правой кнопкой мыши, выберем в контекстном меню «Формат точки данных». На вкладке «Области» в разделе заполнить в выпадающем меню выбираем «Нет» и подтверждаем выбор. Теперь разместим легенду на нужном месте: выделяем её и переносим чуть ниже центра диаграммы. Снимаем выделение с диаграммы, щёлкнув по любой ячейке листа. Пока с этой диаграммой всё.
Выделим диапазон C2:C5 и запустим мастер диаграмм. В этой диаграмме, если у вас такая же таблица, как у меня, нам нужны лишь два шага, первый и последний. На первом выбираем тип диаграммы «Круговая» и подтип «Разделённая круговая». А на четвёртом шаге снимаем галочку с «Показать легенду». Жмём кнопку «Готово».
Не выходя из редактора диаграмм, выделим ряды данных. Нажмём на них правой кнопкой мыши и в контекстном меню выберем «Формат рядов данных». На вкладке «Параметры» поставим галочку «По часовой стрелке» и «Включить скрытые ячейки», в разделе «Начальный угол» - 0 градусов. Подтвердим выбор.
Теперь нам нужно сдвинуть все элементы круговой диаграммы к центру. Для этого выделяем каждый элемент и, захватив его мышкой, тащим к центру. Другой способ — двигать его стрелками на клавиатуре (влево/вправо/вверх/вниз). Сегмент, который у нас будет изображать стрелку, стоит сдвинуть на половину к центру. После этого нужно перекрасить стрелку, сделаем её чёрной. Кликнем по ней правой кнопкой мыши и выберем «Формат точки данных...». В открывшемся окне на вкладке «Области» есть поле с образцами и названиями цветов. Чёрный цвет находится в самом верху. Выбираем его и жмём «Да».
Теперь нам нужно сделать область диаграммы прозрачной, это позволит быстро и точно установить её на нужное место. Кликнем правой кнопкой мыши ближе к краю и в контекстном меню, выбрав пункт «Формат области диаграммы...» в выпадающем списке на вкладке «Области» в разделе «Заполнить», выбираем «Нет». Подтверждаем выбор. Снимите выделение с диаграммы. Вот такой у нас промежуточный результат:

Заготовка для простой диаграммы спидометр в LibreOffice Calc

По сути нам осталось только обесцветить лишние области и объединить всё это в единую группу.
Щёлкаем по второй сделанной нами диаграмме правой кнопкой мыши и выбираем «Правка». Зайдя в редактор диаграмм, выделяем каждый элемент и обесцвечиваем его, исключая нашу стрелку. Закончив с этим, снимаем выделение с диаграммы. Если нам нужно будет опять попасть в эту диаграмму для редактирования, щёлкать нужно по стрелке, в остальных местах мы будем попадать на первую созданную нами диаграмму.
Если у вас на странице находятся таблицы и элементы для этой диаграммы, то выделить все элементы можно выделив один и нажав Ctrl+A. Если же диаграмм много, или много элементов для разных диаграмм, то нужно выделять каждый с нажатым Shift. Чтобы проще это было сделать, нужно немного сжать по бокам вторую диаграмму (со стрелкой). После чего нажать на выделенных объектах правой кнопкой мыши и выбрать в меню «Сгруппировать» → «Сгруппировать». Если в дальнейшем придётся редактировать диаграмму, то можно будет разгруппировать её, или войти в группу.
Пару слов по поводу задания угла для поворота круговой диаграммы. Если мы делаем спидометр с раскрытием больше чем 180 градусов, то для этого простого случая, для первой диаграммы, нужно будет рассчитывать поворот по формуле «угол нижней части» + 90, а для второй диаграммы «угол нижней части»/2 + 90 + 180. Остальное делается подобно выше описанному. То есть, при раскрытии спидометра,например, на 240 градусов, для первой диаграммы нужно выставить 210, а для второй 330 градусов.
У нас получилась вот такая простая диаграмма Спидометр:

Простая диаграмма спидометр в LibreOffice Calc

Диаграмм спидометр с градиентной заливкой

Для того, чтобы создать в LibreOffice Calc диаграмму Спидометр с градиентной заливкой, нам придётся сделать некоторые подготовительные действия. Дело в том, что по умолчанию, мы не сможем найти подходящий градиент, и нам нужно его сначала создать. Я очень коротко объясню как это сделать. В LibreOffice градиент можно создать либо в Draw, либо в Impress. Запускаем любую из этих программ и проходим в меню «Формат» → «Область...». В открывшемся окне переходим на вкладку «Градиенты».

Скриншот окна создания градиентов в LibreOffice Draw

В списке «Тип» выбираем «Линейный», в поле «Угол» вводим 90, в поле «С» выбираем цвет с которого начнётся градиент, в нашем случае это зелёный (Диаграмма 4), в поле «По» выбираем цвет, которым будет заканчиваться градиент, у нас это будет жёлтый (Диаграмма 3). Нажимаем кнопку «Добавить» и вводим красивое название. Создадим ещё один градиент, только начинаться он должен жёлтым, а заканчиваться красным цветом. После того, как вы создали градиенты, они сохраняться в настройках, и вы сможете ими пользоваться в любой программе LibreOffice.
Для того, чтобы построить диаграмму Спидометр с градиентной заливкой, создадим простую таблицу. Она будет выглядеть следующим образом:

Таблица для создания градиентной шкалы диаграммы спидометр в LibreOffice Calc

Отличия в ней только во втором столбце, так как теперь вместо трёх цветов мы используем два градиента, и в том, что мы не будет делать легенду. Столбец B заполняется следующим образом: в B2 мы вводим 120, а в B3 и B4 формулу =(360-$B$2)/2. Получится, что диаграмма будет раскрыта больше, чем на 180 градусов.
Теперь, выделяем диапазон B2:B4 и запускаем мастер диаграмм. На первом шаге выбираем тип «Круговая» подтип «Вложенная круговая». Второй третий шаг нам не нужен, переходим на четвёртый. Снимаем галочку «Показать легенду» и заполняем поле «Заголовок». Жмём «Готово».
Не выходя из редактора диаграмм, открываем окно «Формат рядов данных...», ставим галочку «Включить значение скрытых ячеек», выставляем начальный угол в положение (90 + «угол нижней части» = 210) 210 градусов. Жмём «Да».
Выделяем нижнюю точку данных, жмём на неё правой кнопкой мыши, в контекстном меню выбираем «Формат точки данных...», на вкладке «Области» в меню «Заполнить» выбираем «Нет», подтверждаем выбор. Для левой точки данных в этом же окне в меню выбираем «Градиент» и в поле ниже ищем свой зелёно-жёлтый градиент, подтверждаем выбор. Для правой точки данных делаем тоже самое, но выбираем жёлто-красный градиент. С первой диаграммой всё. Преступим ко второй, отображающей стрелку.
Делается она аналогично предыдущему примеру, за исключением начала отсчёта оси. Выделяем диапазон C2:C5 и запускаем мастер диаграмм. На первом шаге выбираем тип «Круговая» подтип «Разделённая круговая». Второй и третий шаг пропускаем. На четвёртом снимаем галочку «Показать легенду». Жмём кнопку «Готово».
Не выходя из редактора диаграмм, собираем все точки данных в центр, кроме стрелки. Нажимаем правой кнопкой мыши по диаграмме и открываем окно «Формат рядов данных..», на вкладке «Параметры» выставляем галочку «По часовой стрелке», выставляем «Угол наклона» в положение 330 градусов («угол нижней части»/2 + 90 + 180) и ставим галочку «Включить значения скрытых ячеек». Теперь обесцвечиваем область диаграммы. Выходим из редактора диаграмм и накладываем диаграммы друг на друга. Совместив их нужным образом, снова открываем редактор для второй диаграммы и обесцвечиваем ненужные ряды данных, красим стрелку в чёрный и регулируем её величину.
После того, как все закончено, выделяем диаграммы и объединяем их в одну группу. Вот, что у нас должно получиться:

Диаграмма спидометр с градиентной шкалой в LibreOffice Calc

Создание циферблата на диаграмме Спидометр

Из значимых моментов осталось разобрать только создание циферблата на диаграмме Спидометр в LibreOffice Calc. Циферблат помогает нам проще читать такую диаграмму, поэтому нам стоит использовать его, когда это позволительно ситуацией. Для того, чтобы создать такую диаграмму сделаем таблицу.

Таблица для диаграммы спидометр с цифровой шкалой в LibreOffice Calc

В столбец «Подписи» в ячейке B2 введём пробел, в ячейках с B3 по B12 введём шкалу. Шкалу нужно сделать текстовыми полями, для этого будем использовать одинарную кавычку («'») перед числом. Если мы так не сделаем, то категории могут отображаться «странно» на диаграмме. Столбец «Диапазон для спидометра» у нас будет для самой шкалы. Так как я хочу показать разворот диаграммы на 240 градусов, то с ним придётся повозиться. В нём будет 12 ячеек: 1 — снизу и 11 сверху (11, потому что, от нуля до 100 включительно 11 цифр). С C3 до C13 у нас должны быть равные значения, их сумма равна развороту диаграммы + одной такой ячейке. Это нужно, чтобы 0 оказался в начале шкалы, а 100 — в конце, так как подписи у нас будут стоять по середине. Так как у нас 2 элемента для разворота диаграммы, то мы можем посчитать значение одной ячейки по формуле =$D$3/(11-1)*2, где D3 это размер одного элемента для разворота. C2 выставляем как 360 - сумма верхних ячеек, здесь это 360-264=96. Столбец D («Диапазон для спидометра») будет заполнен следующим образом: в D2 мы вводим =F2-90-D3 (где F2 это угол, на который нам следует повернуть диаграмму, чтобы она смотрелась прямо), D3 так же, как и D4 должна быть равна половине разворота спидометра (у нас разворот 240, значит 240/2=120), в D5 должен быть остаток до полного круга =360-SUM(D2:D4). Проверить правильность можно подсчитав сумму в столбце, она везде должна быть равна 360. Столбец E заполняем так же, как и в предыдущем примере. Столбец F нам нужен, чтобы не высчитывать угол, на который нужно повернуть диаграмму, чтобы она встала прямо, в ячейку F2 вносим формулу =C2/2+90+180, этот угол для первой диаграммы, а в F3 формулу =E2/2+90+180, это угол для второй диаграммы. Таблица с формулами выглядит так:

Таблица с формулами для диаграммы спидометр с цифровой шкалой в LibreOffice Calc

Приступим к построению диаграммы. Выделим диапазон B2:D13 и запустим мастер диаграмм. Вся работа с мастером повторяет предыдущие примеры. Выбираем тип «Круговая» подтип «Вложенная круговая». Переходим на четвёртый шаг, снимаем галочку «Показать легенду» и заполняем поле «Заголовок». Нажимаем «Готово».
Не выходя из редактора диаграмм, нажмём правой кнопкой мыши на внешнем круге диаграммы и в контекстном меню выберем «Подписи данных». Затем, ещё раз нажмём правой кнопкой мыши на любой подписи данных и в контекстном меню выберем «Формат подписей данных». На вкладке «Подписи данных» снимем галочку показать значение как число и поставим «Показать категорию». Щёлкните ещё раз по внешнему кругу правой кнопкой мыши и откройте окно «Формат рядов данных». Видно, что подписи циферблата на диаграмме сейчас идут против часовой стрелки, поэтому развернём их — поставим галочку «По часовой стрелке», также поставим галочку «Включить значения скрытых ячеек». Угол, на который нам нужно повернуть диаграмму, уже рассчитан в ячейке F2, это значение и заносим в поле «Градусы». Последнее, что мы сделаем в этом окне, — перейдём на вкладку «Области» и в выпадающем списке «Заполнить» поставим «Нет». Нажмём кнопку «Да», чтобы подтвердить изменения.
Осталось настроить внутренний круг диаграммы. Выделим нижнюю точку данных и щёлкнем по ней правой кнопкой мыши, в контекстном меню выберем «Формат точки данных...», на вкладке «Области» в меню «Заполнить» выставим значение «Нет». Подтверждаем выбор. То же делаем для соседней маленькой части. Выставим необходимые градиенты, как описано в примере выше. Выделяем точку данных правой кнопкой мыши, выбираем «Формат точки данных...», на вкладке «Области» в выпадающем списке «Заполнить» выбираем градиент, который мы создали во втором примере: для левой части зелено-желтый, для правой жёлто-красный.
Следующим шагом будет создание стрелки. Делается она так же, как и прежде. Выделяем диапазон E2:E5 и запускаем мастер диаграмм. На первом шаге выбираем тип «Круговая» и подтип «Разделённая круговая». Второй и третий шаг пропускаем, а на четвёртом снимаем галочку с «Показать легенду». Жмём кнопку «Готово».
Не выходя из редактора диаграмм, соединяем все элементы в центр, кроме стрелки. Стрелку красим в чёрный цвет. Обесцвечиваем область диаграммы. Редактируем ряды данных: ставим галочку «По часовой стрелке» и «Включить скрытые ячейки», поворачиваем диаграмму, выставляя значение указанное в ячейке F3. После этого переносим диаграмму на первую и подгоняем расположение. Когда расположение будет выверено, можно будет обесцветить лишние точки данных, и отрегулировать «длину» стрелки. Вот, диаграмма готова. Остаётся только объединить их в группу, и можно работать (перетаскивать, копировать в другие документы…).
У этого примера есть один плюс. В таблице жёлтой ячейкой помечено единственное значение, которое нужно изменить (это половинка разворота диаграммы). Нам не нужно пересчитывать всё, мы можем подобрать его опытным путём. После этого в розовых ячейках появится те значения, на которое нужно будет повернуть первую и вторую диаграммы. А служебные ячейки мы можем скрыть.
В итоге у нас получилась вот такая диаграмма:

Диаграмма спидометр с цифровой шкалой в LibreOffice Calc

Как я говорил в начале статьи: «Совершенству нет предела». Можно добавить ещё стрелку, сделать более сложный циферблат. Но принципы построения диаграммы Спидометр в LibreOffice Calc останутся неизменными.

Дополнительная литература и источники