Press "Enter" to skip to content

Что такое грамматика графики ggplot2 (ч.3)

Вы открыли продолжение статьи об основах ggplot2. Читайте начало в

  1. Что такое грамматика графики ggplot2 (ч.1)
  2. ggplot2: сопоставления, визуальные средства, статистические преобразования и слои

Подписи осей графика в ggplot2

Снова вернёмся к начальному графику из первой части:

fig <- ggplot(data = cars, aes(x = speed, y = dist)) + geom_point()
fig

ggplot(data = cars, aes(x = speed, y = dist)) + geom_point()

Обратите внимание, здесь я сохранил объект класса ggplot в переменной fig. То есть вся информация о нашем графике теперь хранится в этой переменной. Во второй строке я вызываю эту переменную, и здесь, собственно, происходит отрисовка.

Ggplot2 автоматически взял названия для осей из имён переменных, которые мы использовали для построения графика. Авторы ggplot2 предлагают сразу несколько вариантов того, как можно изменить названия осей. Можно использовать функции ylab(), xlab():

fig + xlab("Скорость, миль в час") +
  ylab("Тормозной путь, футы")
ggplot(data = cars, aes(x = speed, y = dist)) + geom_point() + xlab("Скорость, миль в час") + ylab("Тормозной путь, футы")
ggplot(data = cars, aes(x = speed, y = dist)) + geom_point() + xlab(“Скорость, миль в час”) + ylab(“Тормозной путь, футы”)

Аналогично можно использовать функцию labs():

fig + labs(x = "Скорость, миль в час",
           y = "Тормозной путь, футы")

Здесь мы получим аналогичный график, поэтому не привожу его.

Следующий вариант будет удобен, если помимо названия вы хотите сделать в оси дополнительные изменения: например, изменить расположение основных и вспомогательных линий сетки, задать собственный диапазон значений оси. В нашем случае функция для определения этих параметров называется scale_x_continuous(). К чему такое сложное название функции? Давайте вспомним про то, что пакет ggplot2 — это не очередное R-расширение для создания диаграмм, а целая концепция графической грамматики. И с этой точки зрения, подпись горизонтальной оси — это не просто текстовая строка, расположенная под абсциссой, а элемент инструкции (guide), которая призвана помочь человеку, смотрящему на график, правильно понять, что за информация передаётся с помощью горизонтальной оси. Поэтому логично поместить все параметры одного элемента графика в одну функцию. А функции labs() и ylab()/xlab() — это лишь удобные ярлыки, созданные для уменьшения нагрузки на суставы ваших пальцев и клавиатуру.

Итак, пересилим себя и зададим названия осей с помощью функций scale_*:

fig + scale_x_continuous(name = "Скорость, миль в час") +
  scale_y_continuous(name = "Тормозной путь, футы")

Расширим наше использование scale_* и «поиграем» с характеристиками осей.

fig + scale_x_continuous(name = "Скорость, миль в час",
                         breaks = c(7, 10, 20),
                         limits = c(6, 22)) +
  scale_y_continuous(name = "Тормозной путь, футы",
                     limits = c(5, 50),
                     breaks = NULL)
Точечный график ggplot2 с модификацией осей через scale_continuous()
Точечный график ggplot2 с модификацией осей через scale_continuous()

Здесь по горизонатальной оси мы «обрезали» края графика, выходящие за пределы менее 6 и более 22 миль в час, и указали, чтобы линии сетки проходили только по точкам 7, 10 и 20 миль в час. Аналогичная операция проведена для вертикальной оси, только целиком убраны горизонтальные линии сетки и соответствующие подписи.

Работа с легендами графика

Добавим к графику цвет.

fig2 <- ggplot(data = cars, aes(speed, dist, color = speed)) + geom_point()
fig2
Точечный график ggplot2 с окраской точек
Точечный график ggplot2 с окраской точек

Обратите внимание, я не стал в функции aes() указывать названия аргументов x и y. Так можно делать, так как, если вы не указываете в aes() имена первых двух аргументов, то aes() «думает», что первым аргументом является положение по горизонтали, а вторым — по вертикали.

Чтобы задать собственное название легенды, мы опять обращаемся к функции из семейства scale_*.

fig2 + scale_color_continuous("Скорость") #Снова не указываю имя аргумента
Точечный крафик ggplot2 с исправленным названием цветовой легенды
Точечный крафик ggplot2 с исправленным названием цветовой легенды

Название графика

Название графика можно добавить одной из двух функций: ggtitle() или labs().

fig2 + scale_color_continuous("Скорость") +
  ggtitle("Влияние скорости автомобиля\nна длину тормозного пути") +
  xlab("Скорость, миль в час") +
  ylab("Тормозной путь, футов")
График ggplot2 с названием, именованными осями и легендой
График ggplot2 с названием, именованными осями и легендой

Дополнительную информацию о настройке внешнего вида графика можно почерпнуть на англоязычном сайте одного из разработчиков ggplot2 Уинстона Чанга Cookbook for R

Вы прочитали продолжение статьи. Начало читайте в:

  1. Что такое грамматика графики ggplot2 (ч.1)
  2. ggplot2: сопоставления, визуальные средства, статистические преобразования и слои

One Comment

Leave a Reply

Your email address will not be published. Required fields are marked *

Защита от спама *