Графики с ggplot2
Знакомимся с ggplot2 — самым мощным инструментом визуализации в R, построенным на «грамматике графики».
ggplot2 — пакет для построения графиков по принципу грамматики: график собирается из слоёв (данные + геометрия + эстетика).
В ggplot2 любой график строится из трёх частей: данные (что рисуем), эстетики (aes — какие колонки на оси X, Y, цвет) и геометрия (geom_ — точки, столбцы, линии). Слои соединяются знаком +.
Идея «грамматики графики» в том, что вы не выбираете готовый тип диаграммы из меню, а собираете график из независимых блоков. Это даёт огромную гибкость: захотели раскрасить по группе — добавили одну эстетику; нужны подписи — добавили слой; нужна вторая геометрия поверх первой — добавили ещё geom_. Тот же набор правил описывает и точечную диаграмму, и столбцы, и сложный многослойный график — меняются лишь кирпичики. Освоив эту логику один раз, вы сможете построить практически любую визуализацию, а не заучивать десятки отдельных «рецептов».
Точечная диаграмма: geom_point
Связь двух числовых переменных показывают точками:
library(ggplot2)
ggplot(people, aes(x = age, y = income)) +
geom_point()Читается так: «возьми данные people, по оси X — age, по оси Y — income, нарисуй точками». Каждая строка таблицы становится точкой.
Столбчатая диаграмма: geom_bar и geom_col
Для сравнения категорий используют столбцы:
ggplot(people, aes(x = city)) +
geom_bar()
ggplot(sales, aes(x = month, y = revenue)) +
geom_col()Разница важная: geom_bar сам считает количество строк в каждой категории (высота = частота), а geom_col берёт готовые значения из колонки Y.
Линейный график: geom_line
Для динамики во времени берут линию:
ggplot(sales, aes(x = month, y = revenue)) +
geom_line() +
labs(title = "Выручка по месяцам", x = "Месяц", y = "Выручка")Функция labs добавляет заголовок и подписи осей — отдельным слоем, как и всё в ggplot2.
Цвет как эстетика
Колонку можно «отобразить» в цвет — тогда группы раскрасятся автоматически:
ggplot(people, aes(x = age, y = income, color = city)) +
geom_point()Каждый город получит свой цвет, и ggplot2 сам построит легенду.
Как работает под капотом
Ключевая идея — отображение (mapping) внутри aes: вы связываете колонку данных с визуальным свойством (позицией, цветом, размером). Это отличается от простого «задать цвет». Сравните: aes(color = city) раскрашивает точки по значению колонки city и строит легенду, а geom_point(color = "blue") вне aes просто красит все точки в синий. Понимание этой разницы — половина успеха в ggplot2.
Частые ошибки
- Ставить
+в начале строки. При переносе плюс должен быть в конце предыдущей строки, иначе R решит, что выражение закончилось. - Путать
geom_barиgeom_col. Первый считает частоты, второй рисует готовые значения Y. - Класть постоянный цвет внутрь
aes.aes(color = "red")создаст легенду с одной категорией «red», а не покрасит в красный. Постоянный цвет — внеaes.
Итог
- График ggplot2 = данные +
aes(отображения) +geom_(геометрия), слои через+. geom_point— точки,geom_bar/geom_col— столбцы,geom_line— линия.- В
aesколонки отображаются в позицию, цвет, размер. - Постоянный цвет задают вне
aes, внутри — только колонки.