пятница, 16 мая 2014 г.

Создание диаграммы Торнадо и Бабочка в LibreOffice Calc

Диаграмма Торнадо (Tornado) и Бабочка (Butterfly) помогают нам отображать противоположные стороны одного и тоже процесса, переменной. При этом это не просто красивый вид, но интуитивно понятное отображение. В этой статье я постараюсь показать быстрый и удобный способ построения этих типов диаграмм в LibreOffice Calc.

Диаграммы Торнадо и Бабочка в LibreOffice Calc строятся на основе «Линейчатой» диаграммы с лентами, направленными в разные стороны от оси X. Подробно о построении гистограмм я писал в статье «Создание гистограмм при помощи мастера диаграмм в LibreOffice Calc», здесь я остановлюсь только на тех моментах, которые понадобятся для построения диаграммы Торнадо. Этот тип диаграммы часто используются при оценке чувствительности эффективности проектов и при социологических исследованиях. Поэтому, в классическом виде значения на диаграмме сортируются таким образом, чтобы хотя бы по одной стороне было убывание. Это придаёт диаграмме вид, похожий на торнадо, и позволяет увидеть наиболее важные факторы. Но анализу чувствительности в LibreOffice Calc и использованию диаграмм в этом анализе я хотел бы посвятить отдельную статью, поэтому мы будем разбирать диаграмму Торнадо на немного нетипичном примере, где категориями будут выступать года. Как вы понимаете, при временной шкале сортировка по значению делает диаграмму нечитаемой. И в данном случае необходимо продумать, действительно будут ли видны тенденции, которые вы хотите показать на диаграмме, или следует выбрать другой вид. На мой взгляд, в предлагаемом примере тенденция видна очень хорошо, именно поэтому я в этой статье и остановился на нём. Опять же, используя неклассический пример, я надеюсь расширить ваш диапазон применения этой удобной диаграммы.

Построение простой диаграммы Торнадо

Для примера построения простой диаграммы Торнадо в LibreOffice Calc возьмем международную миграцию населения РФ за 2000 — 2012 годы по данным Росстата. Таблица будет выглядеть так:

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

В столбце C мы вводим значения столбца B «Выбыло из РФ» со знаком минус. Чтобы проще это сделать, можно воспользоваться формулой: вставьте в ячейку C4 формулу =-B4 и протяните её до ячейки C16. Эта формула позволит не только легко изменить знак значения, но и привяжет ячейки служебного столбца к основному, что позволит в дальнейшем при необходимости изменять значения, не делая двойной работы.
Теперь выделим необходимый диапазон: для этого выделим ячейки A4:A16, а затем, нажав на клавиатуре кнопку Ctrl, выделим диапазон C4:D16. В итоге столбец B останется не выделенным. Запустим мастер диаграмм. На первом шаге необходимо выбрать тип диаграммы «Линейчатая» и подтип «Обычная». Если вы используете для годов текстовый формат поля (ставите перед годом апостроф «'»), то второй шаг можно пропустить. Иначе на этом шаге нужно выставить галочку напротив «Первый столбец как подпись». На третьем шаге нам нужно задать названия для рядов данных — это позволит оформить легенду. Для «столбца C» в поле «Диапазон для: Названия» выберем B3, а для «столбец D» — D3 . На четвёртом шаге нам нужно выставить значение переключателя «Снизу» в группе «Показать значение» и заполнить поле «Заголовок» и подпись для оси Y. Нажмем «Готово».
У нас должна получиться вот такая заготовка для диаграммы Торнадо:

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

Теперь нам нужно довести её вид до желаемого результата вручную.
Начнём с настройки оси Y. Щёлкнем по ней правой клавишей мыши и в контекстном меню выберем «Формат оси...». На вкладке «Масштабирование» снимем галочку с «Основной интервал» и поставим более мелкий, чтобы было проще наблюдать значения. Мне кажется, что, для нашего случая, 5 будет в самый раз. Теперь уберём отрицательные числа с оси. Для этого переходим на вкладку «Числа» и снимаем галочку «Исходный формат», в поле «Код формата» вводим [>0] 0. Подтверждаем выбор, нажимая «Да».
Следующее, что нам нужно настроить, это ось X. Для нашего случая нужно, чтобы года шли сверху вниз по возрастанию и она должна быть сбоку диаграммы. Для этого нажимаем на ось X правой кнопкой мыши и в контекстном меню опять выбираем «Формат оси...». На вкладке «Масштабирование» ставим галочку «В обратном направлении». При изменении местоположения оси в данном случае LibreOffice Calc будет рушить структуру диаграммы. Поэтому нам нужно её либо спрятать, либо удалить. Чтобы спрятать ось, на вкладке «Расположение» нам нужно снять галочки с меток интервалов и на вкладке «Подписи» снять галочку «Показать подписи» - это уберёт вид оси с диаграммы. Удалить ось - более радикальный и быстрый способ. После того, как выставим галочку «В обратном направлении» на вкладке «Масштабирование» подтвердим выбор и, выделив ось X, нажмем клавишу «Delete» на клавиатуре. Теперь нам нужно воссоздать ось X слева. Для этого нажмем на область диаграммы и выберем в контекстном меню «Вставить/удалить ось». В открывшемся окне поставим галочку в разделе «Дополнительные оси» «ось X». У нас появится ось справа. Нажмем на неё правой клавишей и в контекстном меню выберем «Формат оси..». На вкладке «Расположение» в разделе «Линия оси» выберем в выпадающем меню «Пересекает в другую ось в» «Начале» и нажмем кнопку «Да». Это сместит ось X в начало оси Y. Хочу заметить, что в Libreoffice Calc порядок рядов данных дополнительная ось не меняет, она переворачивает только значения на оси, поэтому и приходится сначала повозиться с основной осью. Также удалить основную ось можно через окно «Вставка/удаление оси», я использую кнопку «Delete» просто по привычке.
Теперь нам нужно сместить ленты диаграммы, чтобы они стояли на одной линии. Нажмем на любой ленте рядов данных правой кнопкой мыши и выберем «Формат рядов данных» в контекстном меню. На вкладке «Параметры» в разделе «Параметры» в поле «Перекрытие» выставим значение 100%. Также нам нужно на этой вкладке в разделе «Параметры диаграммы» выставить галочку «Включить значения скрытых ячеек», после чего мы сможем скрыть столбец C. Для более лёгкого чтения диаграммы Торнадо я предлагаю поменять цвета лент, для левых оставить синий цвет, а для правых сделать зелёный. Делается это в этом же окне только на вкладке «Области».
Последнее, что нам нужно сделать, это отрегулировать размер и положение элементов на диаграмме. Если у вас мало значений, то это скорее всего и не придётся делать, но так как в этом примере значений много, то стоит этим заняться. Переместим подпись для оси Y вверх, так, чтобы она была под заголовком. А затем, выделив диаграмму, растянем за зелёные квадратики по вертикали чуть ближе к легенде и к заголовку, так, чтобы на оси X появились все года. После этого нужно будет немного подправить компоновку, чтобы она смотрелась более эстетично. Вот что получилось у меня:

Простая диаграмма Торнадо в LibreOffice Calc

Эту же диаграмму LibreOffice Calc можно было построить, используя тип «Линейчатая» с подтипом «С накоплением».

Построение диаграммы Торнадо с накоплением

Диаграмма Торнадо с накоплением в LibreOffice Calc строится на основе «Линейчатой» «С накоплением». Для её создания возьмем расширенную таблицу из предыдущего примера. Таблица будет выглядеть так:

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

Столбец B «Выбыло из РФ — всего» и столбец G «Прибыло в РФ — всего» в нашей диаграмме не потребуются, но в этой таблице они нужны для логичной завершённости, поэтому я их в неё включил. Столбец E берёт значения из C, а столбец F берёт значения из D, они привязаны формулой, подобной как в первом примере. В E4 была вставлена формула =-C4 и протянута до E16, а в ячейку F4 формула =-D4 и протянута до F16.
Выделим необходимый диапазон. Для этого выделим ячейки A4:A16, после чего нажмем клавишу Ctrl и выделим диапазон E4:F16, а затем, не отпуская клавиши Ctrl, диапазон H4:H16. Теперь запустим мастер диаграмм. На первом шаге нам нужно выбрать тип «Линейчатая» подтип «С накоплением». На втором шаге, если вы используете цифровой формат для годов, а не текстовый, нужно будет выставить галочку в «Первый столбец как подпись». На третьем шаге нам придётся потрудиться. Нам необходимо вставить названия рядов данных . Название для столбца E — будет C3, для столбца F — D3, для столбца H — H3, а для столбца I — это будет I3. Так как у нас миграция со странами дальнего зарубежья меньше, я предлагаю изменить их порядок, это упростит восприятие диаграммы. Ряды на гистограмме с накоплением будут накапливаться в положительную сторону, если они положительные, и в отрицательную сторону, если они отрицательные. Поэтому нам нужно первым поставить ряд данных «Выбыло в страны дальнего зарубежья», за ним «Выбыло в страны СНГ», затем «Прибыло из стран дальнего зарубежья» и в самом конце уже «Прибыло из стран СНГ». Поменять местами ряды можно выделяя их и перемещая при помощи стрелки вверх под полем «Ряды данных».

Скриншот мастера диаграмм в LibreOffice Calc

Этого можно было избежать если бы мы в таблице изначально поменяли столбцы местами. Но я решил остановиться на таком примере, чтобы напомнить об этой возможности, так как не всегда удаётся настроить таблицу под диаграмму, сохраняя её логику. На четвёртом шаге мы, как и в предыдущем примере, заполним поле «Заголовок» и подпись для «Оси Y», а также переместим легенду вниз. Нажмем кнопку «Готово».
Наша заготовка будет выглядеть вот так:

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

Как видно, нам нужно проделать те же самые действия, что и в предыдущем примере, за исключением того, что ленты диаграммы уже стоят на одной линии.
Коротко повторю все действия
  • Настроим ось Y: Щёлкнем по ней правой клавишей мыши и в контекстном меню выберем «Формат оси...». На вкладке «Масштабирование» снимем галочку с «Основной интервал» и поставим 5; на вкладке «Числа» снимем галочку «Исходный формат» и в поле «Код формата» введём [>0] 0.
  • Настроим ось X: нажмем на ось X правой кнопкой мыши и в контекстном меню выберем «Формат оси...». На вкладке «Масштабирование» поставим галочку «В обратном направлении», после чего подтвердим изменения и удалим ось X, нажав клавишу «Delete» на клавиатуре. Нажмем на область диаграммы и выберем в контекстном меню «Вставить/удалить ось». В открывшемся окне поставим галочку в разделе «Дополнительные оси» «ось X». Нажмем на дополнительную ось X правой клавишей и в контекстном меню выберем «Формат оси...». На вкладке «Расположение» в разделе «Линия оси» выберем в выпадающем меню «Пересекает в другую ось в» «Начале» и нажмем кнопку «Да».
  • Настроим ряды данных: нажмем на любой ленте ряда данных правой кнопкой мыши и выберем «Формат рядов данных» в контекстном меню. На вкладке «Параметры» в разделе «Параметры диаграммы» выставим галочку «Включить значения скрытых ячеек», после чего мы сможем скрыть служебные столбцы. Для более лёгкого чтения диаграммы Торнадо я предлагаю поменять цвета лент, для левых сделать синие оттенки, а для правых сделать зелёные. Делается это в этом же окне, только на вкладке «Области».
  • Последнее, что нам нужно сделать, это отрегулировать размер и положение элементов на диаграмме.
Вот что получилось у меня в итоге:

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

Построение диаграммы Бабочка

Диаграмма Бабочка — это модификация диаграммы торнадо таким образом, что категории оси X находятся по середине, а отметка 0 начинается от края категорий. В LibreOffice Calc сделать её можно при помощи «Линейчатой» диаграммы с накоплением. Основная сложность в ней состоит в оси Y. Для того, чтобы её создать, нам придется дополнительно воспользоваться «Диаграммой XY». Разберём построение на таблице из первого примера. Изменим таблицу следующим образом:

Таблица для диаграммы Бабочка с накоплением в LibreOffice Calc

Столбец C и E являются столбцами со значениями наших переменных. При помощи столбца D мы создаём место на диаграмме где будут располагаться категории. Значения в его ячейках задают ширину, она должна умещать названия любой из ваших категорий. Если вы не уверены в необходимой ширине, то лучше цифрой задать только первую ячейку D4, в ячейку D5 ввести формулу =D4 и протянуть ей до D16, тогда вы после создания диаграммы сможете подогнать значения, изменяя только одну ячейку. В идеале, чтобы была красивая диаграмма, значения ячеек столбца D должно быть кратным, а лучше равно «Основному интервалу» на оси Y. Столбец B выравнивает диаграмму по центру от левого края. С ним всё немного хитрее. Для того, чтобы это сделать, нам необходимо определить величину, на которую должны отстоять ленты данных от левого края, при этом они должны совпасть в значении 0. Для этого нам нужно выставить значение так, чтобы получившееся число было дополнением к значению в столбце С до уровня, который определяется как максимальное число из столбца С, округленное вверх до кратного основному интервалу. Для себя я решаю эту задачу формулой: в ячейку B4 я ввёл =CEILING(MAX($C$4:$C$16);5;1)-C4 и протянул её до ячейки B16. Функция MAX() будет искать наибольшее значение из диапазона C4:C16, диапазон этот закреплён для того, чтобы при протаскивании он не съехал вниз. Формула CEILING() округляет до большего кратного, которое указано во втором аргументе этой функции. Число, до которого округляется значение ,должно быть кратным нашему основному диапазону на диаграмме по оси Y. Третий аргумент задаёт способ округления. В конце мы отнимаем значение нашей характеристики, чтобы получить ту разницу, которую следует прибавить на диаграмме. К сожалению, без этого ухищрения построить красивую диаграмму не удастся.
В ячейки B3 и D3 введите по пробелу, это понадобится нам для настройки легенды. Если служебных столбцов будет много, то лучше их подписать. В этом случае нужно будет создать служебный диапазон из ячейки с пробелом, чтобы обойти неповоротливость мастера диаграмм.
Схема таблицы с формулами выглядит следующим образом:

Схема формул в таблице для диаграммы Бабочка с накоплением в LibreOffice Calc

Теперь выделим диапазон A3:F16 и запустим мастер диаграмм. На первом шаге нам нужно выбрать тип диаграммы «Линейчатая», подтип «С накоплением». На втором шаге указать «Первый ряд как подпись» и «Первый столбец как подпись». В нашем случае на третьем шаге всё должно заполниться самостоятельно. Если вы предпочитаете выносить служебные столбцы на край таблицы, то их необходимо будут расставить на этом шаге в нужном порядке. В LibreOffice Calc можно выносить служебные диапазоны на отдельный лист, это часто очень удобно. В этом случае, не забудьте на этом шаге их добавить в ряды данных и расставить по порядку. На четвёртом шаге нам нужно заполнить поле «Заголовок», подпись оси Y и переместить легенду вниз. Нажмем кнопку «Готово».
Вот так будет выглядеть наша заготовка:


Заготовка для диаграммы Бабочка с накоплением в LibreOffice Calc

Дальше нам придётся всё делать руками.
Для начала перевернём ось X: нажмем правой кнопкой мыши на ось X, в контекстном меню выберем «Формат оси...», на вкладке «Масштабирование» поставим галочку «В обратном направлении», нажмем кнопку «Да». Теперь ось X нам больше не нужна — удаляем её.
Настроим ось Y: нажмем правой кнопкой мыши на неё и откроем окно «Формат оси...», на вкладке «Масштабирование» снимем галочки с «Минимум», «Максимум», «Основной интервал» и присвоим им значения 0, 65, 5 соответственно. Ноль мы вбиваем, чтобы зафиксировать точку отсчета, LibreOffice в автоматическом режиме иногда её сдвигает для придания красоты диаграмме. Цифра 65 — это сумма всех значений наибольшей ленты диаграммы (попросту длинна самой длинной ленты), округлённая вверх до кратного основному интервалу. А пять, это удобный для нас основной интервал. Выбирая его, нужно помнить, что он является ключевым на всём протяжении построения диаграммы. Мы его использовали, когда делали округление в таблице, когда задавали значение для среднего сегмента, и будем использовать, когда будем воссоздавать ось Y. Окончив с этим, мы можем удалить ось Y.
Воссоздадим ось X: для это нажмем правой кнопкой мыши на центральный ряд данных и в контекстном меню выберем «Формат рядов данных». На вкладке «Области» в выпадающем списке «Заполнить» выберем «Нет», нажмем кнопку «Да» для подтверждения изменений. Теперь ещё раз нажмем на ряд данных правой кнопкой мыши и выберем «Подписи данных», чтобы отобразить подписи. Нажмем на любую из появившихся подписей данных правой кнопкой мыши и в контекстном меню выберем «Формат подписей данных». В открывшемся окне на вкладке «Подписи данных» снимем галочку «Показать значение как число» и поставим «Показать категорию». Подтвердим выбор. Теперь у нас есть подобие оси X.
Теперь нам нужно обесцветить первый ряд данных, чтобы он нам не мешал читать диаграмму. Жмём на него правой кнопкой мыши и открываем «Формат рядов данных», на вкладке «Области» в списке «Заполнить» выбираем «Нет» и подтверждаем выбор.
После этих действий диаграмма примет следующий вид:

Заготовка для диаграммы Бабочка с накоплением в LibreOffice Calc

Нам осталось воссоздать ось Y на этой диаграмме. Сымитировать ось Y для диаграммы Бабочка в LibreOffice Calc можно при помощи подписей точек данных на «Диаграмме XY», которую нужно будет встроить в уже существующую. Подробно о создании диаграммы XY смотрите «Создание линейных графиков (Диаграмма XY) при помощи мастера диаграмм в LibreOffice Calc». Для начала создадим вспомогательную таблицу:

Вспомогательная таблица для диаграммы Бабочка с накоплением в LibreOffice Calc

Я рекомендую создавать эту таблицу в последнюю очередь, так как привязать её к первой таблице достаточно тяжело. И даже если это нам удастся, при значительном изменении наших данных на диаграмме, нам всё равно придётся поправлять руками масштаб оси Y на первой диаграмме и оси X на второй.
Для удобства, ось X данной диаграммы сделаем аналогичной оси Y первоначальной диаграммы, так как там оси перевернуты и ось Y расположена горизонтально. Вспомним, что для нее мы указывали диапазон 0 — 65 с интервалом 5. Соответственно и в нашей вспомогательной таблице значения для оси X будут от 0 до 65 с интервалом 5. Это позволит нам не тратить время на определение количества необходимых значений в таблице. Хотя это не обязательно, может быть использована ось от 0 с любыми равными интервалами.
Значения по оси Y в данной таблице станут подписями наших данных в лентах. Так как на диаграмме значения должны начинаться нулем от края ряда с категориями и расходиться в противоположные стороны, необходимо их вычислить.
В столбце «Ось Y» минимальное значение равно максимальному округлённому значению с отрицательным знаком, взятого из столбца С первой таблицы. В нашем примере это первое значение 14,57, округляя его вверх до кратного основному интервалу получим 15, а в вспомогательную таблицу вносим отрицательное значение, то есть -15. Затем значения идут с «Основным интервалом» до нуля. Ноль повторяется два раза — это важно. Затем увеличение значений продолжается до максимального округлённого значения из столбца E первой таблицы, в нашем примере это 41,77, округляя которое вверх до кратного основному интервалу получаем 45.
Выделим диапазон H4:I17 и запустим мастер диаграмм. На первом шаге выберем «Диаграмма XY». В нашем случае мы можем пропустить второй и третий шаги, перейдём сразу на четвёртый. Снимем галочки «Показать легенду» и «Отображать сетку» «Ось Y». Нажмем «Готово».
Настроим ось X: нажмём на неё правой кнопкой мыши и откроем окно «Формат оси...». На вкладке «Масштабирование» снимем галочку с «Минимум» и «Максимум» и выставим значения 0 и 65 соответственно. Теперь ось X можно удалить.
Нам нужно сделать подписи и убрать значки точек: нажмем на любую точку данных правой клавишей мыши и выберем в контекстном меню «Подписи данных». Нажмем ещё раз правой кнопкой мыши на точку данных, но на этот раз выберем «Формат рядов данных». На вкладке «Параметры» выставим галочку «Включить значения скрытых ячеек» — это позволит нам скрыть служебную таблицу, а на вкладке «Линии» в выпадающем списке «Значок» выберем «Без символа» и нажмем кнопку «Да».
Прижмем подписи к нижней границе: откроем окно «Формат оси...» для оси Y, и на вкладке «Масштабирование» снимем галочки с «Минимум» и «Максимум». Для «Максимума» введём большое значение, например 1000, «Минимум» оставим без изменения. Подтвердим изменения. Теперь можно удалить ось Y.
Сделаем диаграмму прозрачной: для этого нажмем между краем диаграммы и обрамлением правой кнопкой мыши и выберем «Формат области диаграммы...». На вкладке «Области» в выпадающем меню укажем «Нет».
Следующее, что нам нужно сделать, это убрать рамку диаграммы. Нажимаем в пределах рамки правой кнопкой мыши и в контекстном меню выберем «Формат области построения...». В открывшемся окне на вкладке «Обрамление» в выпадающем списке «Стиль» укажем «Нет».
Сожмем область диаграммы по вертикали. По краям диаграммы есть черные квадратики, если на них навести курсор мыши,то курсор изменит форму на двунаправленную стрелку. Захватим мышкой верхний черный квадратик и потянем вниз, пока размер диаграммы по вертикали не достигнет высоты трёх ячеек. Этот размер, на мой взгляд, лучше всего подходит в данном случае,вы можете поэкспериментировать, возможно найдёте более подходящий для ваших целей.
Теперь эту диаграмму нужно перетащить на первую. Разместить её можно сверху или снизу, как вам больше нравиться. Главное, чтобы цифры были точно под линиями интервала. Если цифры немного не попадают, диаграмму можно порастягивать в стороны, добиваясь нужного результата. Также можно заранее растянуть область диаграммы до размеров области построения, тогда при подгонке она не будет вылезать за края первой диаграммы.
Когда мы закончили подстраивать элементы диаграммы и вид стал нас устраивать, мы можем объединить обе диаграммы в единую сущность. Выделим вторую диаграмму нажмем Shift и выделим первую диаграмму, нажмем по выделенной области правой кнопкой мыши и в контекстном меню выберем «Сгруппировать» → «Сгруппировать».
Если нам нужно будет что-то подправить то можно в контекстном меню выбрать «Сгруппировать» → «Войти в группу», а после завершения редактирования «Выйти из группы».
Вот итоговый результат:

Диаграмма Бабочка с накоплением в LibreOffice Calc

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