Чтобы узнать больше о регулировке положения, загляните в раздел справки, посвященный каждой из перечисленных настроек.
Упражнения
1. Какие параметры функции geom_jitter() регулируют количество дрожаний?
2. Примените geom_jitter() и geom_count(), сравните полученные результаты.
3. Какая настройка положения используется в функции geom_boxplot() по умолчанию? Создайте на её основе визуализацию своего набора данных.
Заключительной частью настоящей главы рассмотрим настройку систем координат для построения графиков. Система координат, пожалуй, имеет самый сложный функционал в ggplot2. Естественно, по умолчанию используется прямоугольная декартова система координат, в которой значения x и y позволяют однозначно определить местоположение каждой точки. Но есть и другие системы координат, которые иногда полезны. Функция coord_flip() меняет местами оси x и y. Это пригодится, если хотите нарисовать горизонтальные боковые диаграммы,а также полезно для длинных графиков, которые трудно подгонять без перекрытия по оси x.
# левый график
ggplot(data = My_table[My_table$Класс == "7а" | My_table$Класс == "7б",],
mapping = aes(x = Класс, y = Тема2)) +
geom_boxplot()
# правый график
ggplot(data = My_table[My_table$Класс == "7а" | My_table$Класс == "7б",],
mapping = aes(x = Класс, y = Тема2)) +
geom_boxplot() +
coord_flip()
Функция coord_quickmap() устанавливает соотношение сторон правильным для карт. Это очень важно, если строите планы карт местности с помощью ggplot2. Например:
1) Установите пакет карт, если не использовали его ранее.
install.packages("maps")
2) Подключите соответствующую библиотеку.
library(maps)
3) Заполните переменную картографическими данными.
ru < map_data("world")
4) Теперь можно получить изображение карты в корректном масштабе
ggplot(ru, aes(long, lat, group = group)) +
geom_polygon(alpha=1/5, fill = "green", color = "black") +
coord_quickmap()
Функция coord_polar() переключает графопостроитель в режим полярных координат. Полярный координаты позволяют визуализировать интересную связь между линейчатой и круговой диаграммами. Напоследок вернёмся к тому, с чего начинали, алмазам и их популярности в зависимости от качества. В следующем примере переменная bar заполняется вызовом процедуры формирования блоков данных для изображения. Далее, диаграмма транспонируется, тем самым приводя к линейчатому виду, и изображается в полярной системе координат отдельно:
bar < ggplot(data = diamonds) +
geom_bar(
mapping = aes(x = cut, fill = cut),
show.legend = FALSE,
width = 1
) +
theme(aspect.ratio = 1) +
labs(x = NULL, y = NULL)
bar + coord_flip()
bar + coord_polar()
Упражнения
1. Преобразуйте линейчатую диаграмму с накоплением в круговую диаграмму с помощью coord_polar().
2. Где и как используется функция labs()? Ознакомьтесь с документацией.
3. В чем разница между coord_quickmap() и coord_map()?
4. Почему важно применение coord_fixed()? Что делает функция geom_abline()?
5. Выполните аналогично разобранной визуализацию успеваемости учеников своего класса.
Выше было показано как создавать диаграммы рассеяния, гистограммы и прямоугольные-диаграммы. После закрепления на практике сформировался навык, легко применимый к освоению диаграмм ggplot2 любого типа. Чтобы закрепить изученное, добавим настройки положения, статистическую обработку, настройки системы координат и разбиение данных к исходному шаблону кода:
ggplot(data = <данные>) +
<geom_основная функция графопостроителя>(
mapping = aes(<сопоставления с координатными осями и эстетикой>),
stat = <сбор дополнительной статистики>,
position = <позиция фрагментов диаграммы>
) +
<настройка координатной системы> +
<функция группирования данных>
Новый шаблон принимает семь параметров (заключенные в угловые скобки), которые применяются для описания желаемой визуализации данных. На практике редко приходится заполнять их все, чтобы построить график, так как в ggplot2 используются оптимальные значения по умолчанию для всего кроме данных, сопоставлений с осями и выбора функции geom.
Семь параметров в шаблоне составляют грамматику графопостроителя, формальную систему визуализации изображений. Грамматика основана на понимании того, что можно однозначно описать любой участок кода как комбинацию набора данных, функции графопостроителя, набора соответствий, статистической обработки, настройки положения фрагментов чертежа, системы координат и схемы группирования подмножеств исходных данных.