Графическая визуализация в 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

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

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

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

  • Диаметры abalone по полу
  • 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

Замена geom боксплота на geom скрипичной диаграммы

# 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))
  • Добавьте ещё один слой к диаграмме
  • Создайте панели для каждого пола abalone
  • Добавьте слой facet_wrap()
  • vars(sex) задаёт переменную для панелей

Точечная диаграмма ggplot2 с 3 панелями по полу

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

Оставшаяся часть курса

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

Давайте построим несколько графиков для abalone

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

Preparing Video For Download...