Визуализация данных с помощью ggplot2
Покупка
Тематика:
Статистика
Издательство:
ДМК Пресс
Автор:
Мастицкий Сергей Эдуардович
Год издания: 2017
Кол-во страниц: 222
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-97060-470-0
Артикул: 781031.01.99
Визуализация данных играет важную роль на всех этапах статистического анализа - от первичного ознакомления со свойствами данных до диагностики качества построенных моделей и представления полученных результатов. Из всего разнообразия статистических программ выделяется R - интенсивно развивающаяся и свободно распространяемая система статистических вычислений, в которой реализовано множество классических и современных методов анализа данных. Программные реализации алгоритмов, входящих в базовую версию R, проверены на практике не одним поколением пользователей и ученых. Кроме того, пользователи R постоянно разрабатывают многочисленные дополнения для этой системы. Настоящая книга посвящена ggplot2 - одному из таких пакетов, который
значительно расширяет и без того богатые базовые графические возможности R. В 2015 г. ggplot2 был установлен более миллиона раз. Такая популярность этого пакета обусловлена несколькими причинами, среди которых можно отметить эстетическую привлекательность и пригодное для публикации качество получаемых с его помощью графиков, возможность создавать пользовательские типы диаграмм, а также большой набор опций для тонкой настройки внешнего вида графиков. В этой книге описаны основы работы с ggplot2 и приведены многочисленные примеры кода, которые читатели легко могут модифицировать для собственных нужд. Книга окажется полезной для всех пользователей R, желающих освоить новый мощный инструмент анализа данных.
Тематика:
ББК:
УДК:
- 004: Информационные технологии. Вычислительная техника...
- 311: Теория статистики. Статистические методы
ОКСО:
- ВО - Бакалавриат
- 01.03.05: Статистика
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Москва, 2017 Сергей Мастицкий Визуализация данных с помощью ggplot2
УДК 311:004.9R ББК 60.6с515 М32 Мастицкий С. Э. М32 Визуализация данных с помощью ggplot2. – М.: ДМК Пресс, 2017. – 222 с.: ил. ISBN 978-5-97060-470-0 Визуализация данных играет важную роль на всех этапах статистического анализа – от первичного ознакомления со свойствами данных до диагностики качества построенных моделей и представления полученных результатов. Из всего разнообразия статистических программ выделяется R – интенсивно развивающаяся и свободно распространяемая система статистических вычислений, в которой реализовано множество классических и современных методов анализа данных. Программные реализации алгоритмов, входящих в базовую версию R, проверены на практике не одним поколением пользователей и ученых. Кроме того, пользователи R постоянно разрабатывают многочисленные дополнения для этой системы. Настоящая книга посвящена ggplot2 – одному из таких пакетов, который значительно расширяет и без того богатые базовые графические возможности R. В 2015 г. ggplot2 был установлен более миллиона раз. Такая популярность этого пакета обусловлена несколькими причинами, среди которых можно отметить эстетическую привлекательность и пригодное для публикации качество получаемых с его помощью графиков, возможность создавать пользовательские типы диаграмм, а также большой набор опций для тонкой настройки внешнего вида графиков. В этой книге описаны основы работы с ggplot2 и приведены многочисленные примеры кода, которые читатели легко могут модифицировать для собственных нужд. Книга окажется полезной для всех пользователей R, желающих освоить новый мощный инструмент анализа данных. УДК 311:004.9R ББК 60.6с515 Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность приводимых сведений. В связи с этим издательство не несет ответственности за возможные ошибки, связанные с использованием книги. © Мастицкий С.Э. ISBN 978-5-97060-470-0 © Оформление, издание, ДМК Пресс, 2017
Посвящаю эту книгу своей жене Светлане
Оглавление Предисловие 7 1 Введение 10 1.1 Что представляет собой ggplot2? . . . . . . . . . . . . . . . . 10 1.2 Инсталляция ggplot2 и начало работы . . . . . . . . . . . . 10 1.3 Грамматика графических элементов . . . . . . . . . . . . . . 11 1.4 Данные, используемые в примерах . . . . . . . . . . . . . . . 12 2 Функция qplot(): быстрое решение для задач визуализации 15 2.1 Аргументы функции qplot() . . . . . . . . . . . . . . . . . . 15 2.2 Построение диаграмм рассеяния с помощью qplot() . . . . 16 2.3 Другие примеры использования qplot() . . . . . . . . . . . . 19 2.3.1 Линии тренда . . . . . . . . . . . . . . . . . . . . . . . 20 2.3.2 Одномерные диаграммы рассеяния . . . . . . . . . . . 21 2.3.3 Диаграммы размахов . . . . . . . . . . . . . . . . . . . 22 2.3.4 Гистограммы, кривые плотности вероятности, полигоны частот . . . . . . . . . . . . . . . . . . . . . . 25 2.3.5 Столбиковые диаграммы . . . . . . . . . . . . . . . . . 30 2.4 Категоризованные графики . . . . . . . . . . . . . . . . . . . 31 3 Построение графиков слой за слоем 34 3.1 Аргументы функции ggplot() . . . . . . . . . . . . . . . . . 34 3.2 Слои . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 3.3 Требования к данным . . . . . . . . . . . . . . . . . . . . . . . 38 3.4 Присваивание эстетических атрибутов . . . . . . . . . . . . . 39 3.5 Группирование данных . . . . . . . . . . . . . . . . . . . . . . 41 3.6 Геометрические объекты, реализованные в ggplot2 . . . . . 43 3.7 Статистические преобразования . . . . . . . . . . . . . . . . . 46 4 Основные типы статистических графиков 49 4.1 Общие аргументы geom– и stat–функций . . . . . . . . . . . 49 4.2 Визуализация одномерных распределений . . . . . . . . . . . 50 4.2.1 Точечные диаграммы Уилкинсона: geom_dotplot() . 50 4.2.2 Столбиковые диаграммы: geom_bar() . . . . . . . . . 54 4.2.3 Гистограммы: geom_histogram() . . . . . . . . . . . . 60 4.2.4 Полигоны частот: geom_freqpoly() . . . . . . . . . . 62 4.2.5 Кривые плотности вероятности: geom_density() . . . 64
ОГЛАВЛЕНИЕ 5 4.2.6 Кумулятивные функции распределения: geom_step() 67 4.2.7 Квантильные графики: stat_qq() . . . . . . . . . . . 71 4.3 Визуализация 2D– и 3D–распределений . . . . . . . . . . . . 73 4.3.1 Контуры плотности вероятности: geom_density2d() . 74 4.3.2 Изолинии: geom_contour() . . . . . . . . . . . . . . . 76 4.3.3 Сотовые диаграммы: geom_hex() . . . . . . . . . . . . 78 4.4 Визуализация сводной статистической информации о количественных переменных . . . . . . . . . . . . . . . . . . 79 4.4.1 Диаграммы диапазонов: geom_linerange(), geom_pointrange(), geom_errorbar(), geom_crossbar() . . . . . . . . . . . . . . . . . . . . . 79 4.4.2 Диаграммы размахов: geom_boxplot() . . . . . . . . . 85 4.4.3 Скрипичные диаграммы: geom_violin() . . . . . . . 89 4.5 Визуализация зависимостей . . . . . . . . . . . . . . . . . . . 92 4.5.1 Диаграммы рассеяния: geom_point() . . . . . . . . . 93 4.5.2 Линии тренда: geom_smooth() . . . . . . . . . . . . . . 95 4.5.3 Линии квантильной регрессии: geom_quantile() . . . 99 4.6 Визуализация временных рядов . . . . . . . . . . . . . . . . . 101 4.6.1 Функция geom_line() . . . . . . . . . . . . . . . . . . 102 4.6.2 Функция geom_ribbon() . . . . . . . . . . . . . . . . . 104 4.7 Тепловые карты: geom_tile() . . . . . . . . . . . . . . . . . . 105 4.8 Другие геометрические объекты . . . . . . . . . . . . . . . . 107 4.8.1 «График–щетка»: geom_rug() . . . . . . . . . . . . . . 107 4.8.2 Горизонтальные и вертикальные линии: geom_hline(), geom_vline() . . . . . . . . . . . . . . . 109 4.8.3 Прямоугольные области: geom_rect() . . . . . . . . . 111 4.8.4 Отрезки: geom_segment() . . . . . . . . . . . . . . . . 112 4.8.5 Ломаные линии: geom_path() . . . . . . . . . . . . . . 113 4.8.6 Многоугольники: geom_polygon() . . . . . . . . . . . 116 4.8.7 Площадь под кривой: geom_area() . . . . . . . . . . . 118 4.8.8 Текстовые аннотации: geom_text() . . . . . . . . . . . 119 4.9 Географические карты: geom_map() . . . . . . . . . . . . . . . 124 4.10 Добавление слоев при помощи функций семейства stat . . . 131 5 Шкалы 134 5.1 Шкалы и их основные типы . . . . . . . . . . . . . . . . . . . 134 5.2 Аргументы, общие для всех scale–функций . . . . . . . . . 137 5.3 Шкалы положения . . . . . . . . . . . . . . . . . . . . . . . . 140 5.3.1 Шкалы положения для количественных переменных 140 5.3.2 Шкалы положения для дат и времени . . . . . . . . . 145 5.3.3 Шкалы положения для качественных переменных . . 147 5.4 Цветовые шкалы . . . . . . . . . . . . . . . . . . . . . . . . . . 149 5.4.1 Цветовые шкалы для количественных переменных . 150 5.4.2 Цветовые шкалы для качественных переменных . . . 154 5.5 Пользовательские шкалы для качественных переменных . . 158 5.6 Тождественные шкалы . . . . . . . . . . . . . . . . . . . . . . 160
ОГЛАВЛЕНИЕ 6 Системы координат 162 6.1 Декартова система и ее разновидности . . . . . . . . . . . . . 163 6.2 Полярная система . . . . . . . . . . . . . . . . . . . . . . . . . 166 6.3 Картографические проекции . . . . . . . . . . . . . . . . . . . 168 7 Подробнее о категоризованных графиках 171 7.1 Два способа организации панелей . . . . . . . . . . . . . . . . 171 7.2 Функция facet_grid() . . . . . . . . . . . . . . . . . . . . . . 172 7.3 Функция facet_wrap() . . . . . . . . . . . . . . . . . . . . . . 180 8 Подготовка графиков к публикации 183 8.1 Стили . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 8.2 Создание составных рисунков . . . . . . . . . . . . . . . . . . 201 8.2.1 Использование окон просмотра . . . . . . . . . . . . . 203 8.2.2 Использование пакета gridExtra . . . . . . . . . . . . 206 8.3 Экспорт графиков из среды R . . . . . . . . . . . . . . . . . . 208 9 Дополнительные ресурсы для изучения ggplot2 212 9.1 Литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 9.2 Онлайн–ресурсы . . . . . . . . . . . . . . . . . . . . . . . . . . 213 9.3 Расширения, созданные на основе ggplot2 . . . . . . . . . . 214 Предметный указатель 217
Предисловие «...нет статистического метода более мощного, чем хорошо подобранный график.» (Chambers et al., 19831) Визуализация данных играет важную роль на всех этапах статистического анализа — от первичного ознакомления со свойствами данных до диагностики качества построенных моделей и представления полученных результатов. Существует много компьютерных программ для выполнения сложных статистических расчетов и создания не менее сложных графиков. Из всего этого разнообразия выделяется R — интенсивно развивающаяся и свободно распространяемая система статистических вычислений, в которой реализовано множество классических и современных методов анализа данных. Язык R имеет почти полувековую историю. Он был создан в середине 1990–х г. в Университете Окленда (Unverity of Auckland) Робертом Джентельменом (Robet Gentleman) и Росом Ихакой (Ross Ihaka) на основе языка S2, который, в свою очередь, был разработан в AT&T Bell Laboratories Джоном Чемберсом (John Chambers), Риком Бекером (Rick Becker) и их коллегами в 1976 году3. Программные реализации алгоритмов, входящих в ядро R, проверены на практике не одним поколением пользователей и ученых. Кроме того, пользователи R постоянно разрабатывают многочисленные дополнения (т. н. «пакеты») для этой системы4. Представляемая вашему вниманию книга посвящена ggplot2 — одному из таких пакетов, который значительно расширяет и без того богатые базовые возможности R по визуализации данных. Основные создатели ggplot2 — Хэдли Уикхэм5 (Hadley Wickham) 1 Chambers J. M., Cleveland W. S., Tukey P. A., Kleiner B. (1983) Graphical Methods for Data Analysis. Duxbury Press. 2 http://cran.r-project.org. 3 Подробнее о создании языка S можно узнать из очень интересного выступления Рика Бекера «Forty Years of S» (конференция UseR, Стэнфорд, 2016 г.): http://bit. ly/29lKfNm. 4 В сентябре 2016 г. количество пакетов в хранилище CRAN превысило 9000. Актуальную статистику можно всегда узнать на странице http://bit.ly/2d6ugbn. 5 http://had.co.nz.
Предисловие и Уинстон Ченг6 (Winston Chang) — проделали огромную работу, результатами которой сегодня пользуются сотни тысяч людей7. Популярность пакета обусловлена несколькими причинами, среди которых можно отметить эстетическую привлекательность и пригодное для публикации качество получаемых с его помощью графиков, возможность создавать пользовательские типы диаграмм, а также широкий набор инструментов для настройки внешнего вида графиков. Кроме того, логика и синтаксис команд ggplot2 базируются на интуитивно понятных идеях «грамматики графических элементов» (Wilkinson, 19998), что облегчает программирование. К сожалению, информации о ggplot2 на русском языке крайне мало. Цель данной книги — заполнить этот информационный пробел, представив описание основных возможностей пакета. Следует, однако, подчеркнуть, что у меня не было намерения дать сколь–либо исчерпывающее описание ggplot2: такими полными источниками всегда будут книги Х. Уикхэма (Wickham, 2009, 20169). Кроме того, важным справочным источником является официальная онлайн–документация по ggplot210, которую нет смысла дублировать на бумаге. Настоящая книга предназначена для широкой аудитории — для всех, кто сталкивается с необходимостью визуализации данных и интересуется соответствующими методами и средствами. Предполагается, что читатель имеет некоторое представление об основных статистических понятиях (на уровне вводного университетского курса статистики) и обладает уверенными навыками работы с R. Последнее обстоятельство особенно важно, поскольку команды, не имеющие непосредственного отношения к ggplot2, подробно здесь не обсуждаются. Читателям, не знакомым с R, можно порекомендовать следующие книги на русском языке: • Зарядов И. С. (2010) Введение в статистический пакет R: типы переменных, структуры данных, чтение и запись информации, графика. Российский университет дружбы народов. • Шипунов А. Б., Балдин Е. М., Волкова П. А., Коробейников А. И., Назаров С. А., Петров С. В., Суфиянов В. Г. (2012) Наглядная статистика. Используем R! ДМК Пресс. • Мастицкий С. Э., Шитиков В. К. (2015) Статистический анализ и визуализация данных с помощью R. ДМК Пресс. Я благодарен Дмитрию Мовчану и всей команде «ДМК Пресс» за помощь с подготовкой и изданием этой книги, а также Петру Валь, Алексею Кожевину, Игорю Магдееву, Александру Маслову, Виталию Скальскому и Тимуру Шеферу за внимательное прочтение рукописи и высказанные ими предложения по улучшению текста. 6 https://github.com/wch. 7 В 2015 г. пакет был установлен более миллиона раз (Wickham, 2016). 8 Wilkinson L. (1999) The Grammar of Graphics. Springer. 9 Wickham H. (2009) ggplot2: Elegant graphics for data analysis. Springer. Второе издание книги вышло в июне 2016 г. 10 http://docs.ggplot2.org/current.
Предисловие 9 Эту книгу следует считать приложением к моему блогу «R: Анализ и визуализация данных»11, целью которого является популяризация R среди русскоязычных пользователей. Все примеры кода и данные можно найти на GitHub–странице книги12. Любые замечания и пожелания вы можете направлять по электронной почте rtutorialsbook@gmail.com. Сергей Мастицкий, Лондон, сентябрь 2016 г. 11 http://r-analytics.blogspot.com. 12 https://github.com/ranalytics/ggplot2-ru.
Глава 1 Введение 1.1 Что представляет собой ggplot2? Пакет является дополнением к системе статистических вычислений R и служит для визуализации данных. В основе ggplot2 лежат идеи «грамматики графических элементов» Лиланда Уилкинсона (Leland Wilkinson), что проявляется в концептуальной целостности и логичном синтаксисе этого пакета. В своей работе Л. Уилкинсон (Wilkinson, 19991) описал набор элементарных графических компонентов, комбинируя которые, можно послойно создавать самые замысловатые графики. Все эти компоненты и операции для их комбинирования доступны в ggplot2, благодаря чему пользователь практически не ограничен в выборе заранее определенных типов графиков и имеет возможность изображать данные в точном соответствии со своими потребностями. При этом тщательно продуманные и заданные по умолчанию настройки ggplot2 позволяют создавать эстетически привлекательные графики с использованием лаконичного синтаксиса. 1.2 Инсталляция ggplot2 и начало работы Инсталляция пакета ggplot2 не составляет никакого труда. Убедитесь, что на вашем компьютере установлена последняя версия R2 и что он подключен к сети Интернет, после чего выполните следующую обычную в таких случаях команду: install.packages("ggplot2") Перед использованием установленного пакета ggplot2 необходимо загрузить его при помощи команды library("ggplot2") 1 Wilkinson L. (1999) The Grammar of Graphics. Springer. 2 Приведенные в книге примеры были созданы с использованием R v3.3.1 и ggplot2 v2.0.0.