Графические визуализации в R с помощью ggplot2

R для пользователей SAS

Melinda Higgins, PhD

Research Professor/Senior Biostatistician Emory University

Пакет ggplot2

Логотип ggplot2

  • ggplot2 — мощный пакет для графики в R
  • «GG» в ggplot означает «грамматику графики»
  • ggplot2 строит графики послойно
  • Геометрические объекты добавляются поверх базового слоя
R для пользователей SAS

Слои — базовый слой

# Create plot for x=sex and y=diameter
ggplot(data = abalone, aes(sex, diameter))
  • Определите базовый слой с помощью ggplot()
  • Задайте data = abalone
  • Задайте aes для sex и diameter

  • Графических объектов пока нет

  • Ось x готова для sex
  • Ось y готова для diameter
  • Сетка построена

Среда ggplot2 без боксплота

R для пользователей SAS

Слои — добавление геома боксплота

# Add boxplot geometric object or geom
ggplot(data = abalone,
       aes(sex, diameter)) +
  geom_boxplot()
  • Оператор + добавляет слой
  • Добавлен боксплот geom_boxplot()

  • Результат — серия боксплотов

  • Диаметры морских ушек по полу
  • F — самки, I — молодь, M — самцы

Боксплоты в ggplot2

R для пользователей SAS

Слои — добавление темы

# Add black white theme
ggplot(data = abalone,
       aes(sex, diameter)) +
  geom_boxplot() +
  theme_bw()
  • Добавьте слой «темы» с помощью theme_bw()
  • Убирает серый фон
  • Рисует чёрную рамку вокруг графика

Боксплот ggplot2 с чёрно-белой темой

R для пользователей SAS

Замена боксплота на график-скрипку

# Change to geom_violin()
ggplot(data = abalone,
       aes(sex, diameter)) +
  geom_violin() +
  theme_bw()
  • geom_violin заменяет geom_boxplot
  • Создаёт форму, напоминающую скрипку
  • Отражает распределение плотности данных
  • Простая замена — и график уже другой

График-скрипка в ggplot2

R для пользователей SAS

Гистограмма по одной переменной

# Make histogram of shuckedWeight
ggplot(abalone, aes(shuckedWeight)) +
  geom_histogram()
  • Гистограмма строится по одной переменной
  • Одна переменная — один эстетический параметр
  • Добавьте geom_histogram()
  • Задайте aes() равным shuckedWeight
  • Цвета по умолчанию нужно изменить

Гистограмма ggplot2 полностью чёрная

R для пользователей SAS

Добавление цветов в гистограмму

# Make lines black and fill light blue
ggplot(abalone, aes(shuckedWeight)) +
  geom_histogram(color = "black",
                 fill = "lightblue")
  • Измените графические параметры
  • Задайте color для границ столбцов
  • Задайте fill для заливки столбцов
  • Каждый параметр указывается внутри ()
  • Гистограмма стала значительно лучше

Гистограмма ggplot2 с синими столбцами и чёрными границами

R для пользователей SAS

Добавление заголовка и подписей осей

# Add x, y axis labels and title
ggplot(abalone, aes(shuckedWeight)) +
  geom_histogram(color = "black",
                 fill = "lightblue") +
  xlab("Shucked Weight") +
  ylab("Frequency Counts") +
  ggtitle("Shucked Weights Histogram")
  • Добавьте подписи осей и заголовок
  • Используйте xlab() и ylab() для осей
  • Используйте ggtitle() для заголовка
  • График готов к публикации!

Гистограмма ggplot2 с подписями осей и заголовком

R для пользователей SAS

Создание точечного графика

# Make scatterplot with geom_point()
ggplot(abalone,
       aes(rings, shellWeight)) +
  geom_point()
  • Для точечного графика aes требует две переменные
  • geom_point() добавляет точки
  • Точечный график веса раковины по кольцам

Точечный график ggplot2: вес раковины по кольцам

R для пользователей SAS

Добавление сглаженной линии подгонки

# Add smoothed fit line
ggplot(abalone,
       aes(rings, shellWeight)) +
  geom_point() +
  geom_smooth()
  • Добавьте к точечному графику линию geom_smooth()
  • Включает закрашенную область доверительного интервала

Точечный график ggplot2 со сглаженной линией подгонки

R для пользователей SAS

Разбивка на панели по переменной

# Add panels using facet_wrap()
ggplot(abalone,
       aes(rings, shellWeight)) +
  geom_point() +
  geom_smooth() +
  facet_wrap(vars(sex))
  • Добавьте ещё один слой к точечному графику
  • Создайте панели для каждого пола морского ушка
  • Добавьте слой facet_wrap()
  • vars(sex) задаёт переменную для разбивки на панели

Точечный график ggplot2 с тремя панелями по полу

R для пользователей SAS

Что впереди

  • Глава 1 завершается кратким введением в графику
    • Основы работы с ggplot2
    • Визуализация измерений морских ушек по полу
  • Глава 2 — навыки обработки данных
    • Очистка набора данных abalone
  • Глава 3 — методы исследования данных
    • Описательная статистика, корреляции и сравнительные тесты
  • Глава 4 — моделирование и представление результатов
    • Прогнозирование возраста морских ушек по измерениям
    • Анализ моделей по полу
R для пользователей SAS

Давайте потренируемся!

R для пользователей SAS

Preparing Video For Download...