Язык R

и его применение в биоинформатике

Семинар 5

Анна Валяева

5 октября 2026

Пример - данные про пингвинов

Данные из пакета {palmerpenguins}.

Artwork by @allison_horst

  • в строках - наблюдения/объекты
  • в столбцах - признаки/измерения
penguins <- read_csv("data/penguins.csv")
penguins
# A tibble: 344 × 8
   species island    bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
   <chr>   <chr>              <dbl>         <dbl>             <dbl>       <dbl>
 1 Adelie  Torgersen           39.1          18.7               181        3750
 2 Adelie  Torgersen           39.5          17.4               186        3800
 3 Adelie  Torgersen           40.3          18                 195        3250
 4 Adelie  Torgersen           NA            NA                  NA          NA
 5 Adelie  Torgersen           36.7          19.3               193        3450
 6 Adelie  Torgersen           39.3          20.6               190        3650
 7 Adelie  Torgersen           38.9          17.8               181        3625
 8 Adelie  Torgersen           39.2          19.6               195        4675
 9 Adelie  Torgersen           34.1          18.1               193        3475
10 Adelie  Torgersen           42            20.2               190        4250
# ℹ 334 more rows
# ℹ 2 more variables: sex <chr>, year <dbl>

Типы данных

Количественные признаки

Типы данных

Категориальные признаки

Типы графиков

Категориальные признаки

  • Распределение наблюдений по категориям
    • Число пингвинов разных видов
    • Число самок и самцов среди пингвинов разных видов

Столбчатая диаграмма

Количественные признаки

  • Распределение одного количественного признака
    • Разброс длин крыльев пингвинов
  • Распределение одного количественного признака в разных категориях
    • Разброс длин крыльев у разных видов пингвинов

Гистограмма и график плотности

Количественные признаки

  • Распределение одного количественного признака в разных категориях
    • Разброс длин крыльев у разных видов пингвинов
    • Разброс длин крыльев у самок и самцов разных видов пингвинов

Диаграмма размаха

Количественные признаки

  • Взаимосвязь двух количественных признаков
    • Связь длины и ширины клюва у пингвинов
    • Соотношение длины крыла и массы тела пингвинов разных видов

Диаграмма разброса

Типы графиков 🏠

  • Один или несколько категориальных признаков
    • Столбчатая диаграмма
    • Круговая диаграмма
    • Диаграмма в виде плоского дерева [treemap]
    • Диаграмма Венна
    • Диаграмма UpSet
    • Потоковая диаграмма [Sankey diagram]

Как выбрать график под ваши данные

Типы графиков 🏠

  • Один количественный признак
    • Гистограмма
    • График плотности
  • Один количетвенный и один или несколько категориальных признаков
    • Диаграмма размаха
    • Скрипичная диаграмма [Violin plot]
    • Ridgeline график
  • Два или несколько количественных признаков
    • Диаграмма разброса
    • Линейная диаграмма

Как выбрать график под ваши данные

Найдите отличия…


Гистограмма

Столбчатая диаграмма

Одинаковые данные, но…


Число бинов - 5

Число бинов - 50

Ящик с усами

Ящик с усами

Показывает статистики распределения:

  • медиану (Q2)
  • нижнюю (Q1) и верхнюю (Q3) квартиль
  • межквартильный размах (IQR)
  • минимальное значение или Q1 - 1.5 × IQR
  • максимальное значение или Q3 + 1.5 × IQR
  • выбросы

Может быть по-разному в зависимости от используемого инструмента.

Ящик с усами


ggplot2 графика

ggplot2

  • свой синтаксис - грамматика графики ggplot2
  • график создается послойно
  • функции перечисляются через +
  • обязательно указать данные в виде датафрейма и переменные - названия столбцов, а также геометрическую функцию (тип графика)
# ОБЯЗАТЕЛЬНОЕ
ggplot(
  data = <DATA>,               # данные
  mapping = aes(<MAPPINGS>)) + # переменные по осям X, Y, цвет...
  <GEOM_FUNCTION>() +          # тип графика
  
# ДОПОЛНИТЕЛЬНОЕ  
  <SCALE_FUNCTION>() +         # трансформация осей
  <COORDINATE_FUNCTION>() +    # настройка системы координат
  <FACET_FUNCTION>() +         # разделение графика на панель
  <THEME_FUNCTION>()           # настройка оформления графика


Данные -> …

  • создается пустой “холст” для графика
ggplot(data = penguins)

Данные -> оси -> …

  • появляются обозначения переменных по осям X и Y
ggplot(data = penguins, 
       mapping = aes(
         x = bill_length_mm, 
         y = bill_depth_mm))

Данные -> оси -> тип графика -> …

  • появляются точки - обозначения индивидуальных наблюдений из набора данных
ggplot(data = penguins, 
       mapping = aes(
         x = bill_length_mm, 
         y = bill_depth_mm)) +
  geom_point(size = 3, alpha = 0.8)

Данные -> оси -> тип графика -> тема -> …

  • меняется оформление графика - черно-белая тема вместо серой
ggplot(data = penguins, 
       mapping = aes(
         x = bill_length_mm, 
         y = bill_depth_mm)) +
  geom_point(size = 3, alpha = 0.8) +
  theme_bw()

Оформление графика 🏠

В ggplot2 есть несколько встроенных тем для оформления графика:

  • theme_grey() - стандартная серая тема
  • theme_bw()
  • theme_classic()
  • …
  • theme_void()

Добавим цвет - еще один параметр в aes

  • добавляется обозначение разных категорий наблюдений с помощью цвета
  • используется стандартная палитра для дискретных признаков
ggplot(data = penguins, 
       mapping = aes(
         x = bill_length_mm, 
         y = bill_depth_mm,
         color = species)) +
  geom_point(size = 3, alpha = 0.8) +
  theme_bw()

Порисуем!

Набор данных

Давайте посмотрим на встроенный датасет msleep.

Что он содержит?

Подробную информацию о датасете можно получить в справке: ?msleep.

Вес животных

Давайте опишем животных из этого датасета с точки зрения их веса.

  1. В каких пределах изменяется вес животных?
  2. Есть ли заметные различия по этому параметру между группами животных с разным типом питания?

Взаимосвязь веса животных и длительности сна

  1. Наблюдается ли взаимосвязь между весом животных и общей длительностью их сна?

Конец!