и его применение в биоинформатике
Лекция 4
Анна Валяева
22 сентября 2023
Данные из пакета palmerpenguins.
Artwork by @allison_horst
# 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>
+# ОБЯЗАТЕЛЬНОЕ
ggplot(
data = <DATA>, # данные
mapping = aes(<MAPPINGS>)) + # переменные по осям X, Y, цвет...
<GEOM_FUNCTION>() + # тип графика
# ДОПОЛНИТЕЛЬНОЕ
<SCALE_FUNCTION>() + # трансформация осей
<COORDINATE_FUNCTION>() + # настройка системы координат
<FACET_FUNCTION>() + # разделение графика на панель
<THEME_FUNCTION>() # настройка оформления графикаВ ggplot2 есть несколько встроенных тем для оформления графика:
theme_grey() - стандартная серая темаtheme_bw()theme_classic()theme_void()aesscale_color_manual()Цвета можно задать с помощью:
color()color()[573]rgb()
rgb(244/255, 164/255, 96/255)colors()Показаны первые 125 цветов из 657.
Один и тот же график можно создать, написав код по-разному.
aes задает оси для всех геометрических функцийОдин и тот же график можно создать, написав код по-разному.
aes задает оси только для точек - диаграммы разбросаaes - aestheticsДля разных geom_ функциий набор доступных aes разный.
Для geom_point():
shape - тип символаcolor - цвет общий / цвет обводкиfill - заливкаsize - размерstroke - толщина обводкиalpha - прозрачностьaes переменные - из разных столбцовИ color, и fill для обводки и заливки.
Задать цвет вручную - scale_color_manual() или scale_fill_manual().
element_text()element_line()element_rect(После записи в файл, проверяйте, что все сохранилось правильно. Например, размеры итоговой картинки (height и width) могут не подходить для вашего графика - все либо будет слишком мелко, либо элементы будут наезжать друг на друга.
Если не указать plot = p, то будет сохранен последний нарисованный/выведенный в консоль график.
Более универсальный вариант:
Либо сохраняйте вручную из RStudio.
В панели Plots: Export -> Save as…
geom_point()geom_line()geom_histogram()geom_boxplot()geom_bar() и geom_col()geom_text() и geom_label()geom_histogram() 🏠x - количественный признак, распределение которого изучаемfill (или color) можно разделить гистограмму по значениям категориальной переменной на несколько на одном графикеgeom_boxplot() 🏠x - значения категориальной переменнойy - количественный признак, распределение которого изучаемfill (или color) можно “разбить” ящики с усами по значениям второй категориальной переменнойfactor() 🏠Преобразовать какой-то вектор в вектор с факторами:
[1] Gentoo Adelie Gentoo Chinstrap Adelie Chinstrap Gentoo
[8] Gentoo Chinstrap Gentoo
Levels: Adelie Chinstrap Gentoo
Обычно оптимальнее заранее создать столбец с факторами или преобразовать столбец с категориями в факторы:
penguins_fct <- penguins %>%
mutate(
species = factor(species, levels = c("Chinstrap", "Adelie", "Gentoo")))
penguins_fct# A tibble: 344 × 8
species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
<fct> <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>
[1] Gentoo Adelie Gentoo Chinstrap Adelie Chinstrap Gentoo
[8] Gentoo Chinstrap Gentoo
Levels: Adelie Chinstrap Gentoo
[1] "Gentoo" "Chinstrap" "Adelie"
[1] "Gentoo" "Chinstrap" "Adelie"
[1] "Chinstrap" "Adelie" "Gentoo"
as.factor() сортирует уровни фактора по алфавиту [1] Gentoo Adelie Gentoo Chinstrap Adelie Chinstrap Gentoo
[8] Gentoo Chinstrap Gentoo
Levels: Adelie Chinstrap Gentoo
forcats::as_factor() сортирует уровни фактора по порядку их встречи[1] "character"
[1] "character"
[1] NA NA NA NA NA NA NA NA NA NA
[1] "Adelie" "Adelie" "Chinstrap" "Chinstrap" "Chinstrap" "Gentoo"
[7] "Gentoo" "Gentoo" "Gentoo" "Gentoo"
[1] "integer"
[1] "factor"
[1] 1 2 1 3 2 3 1 1 3 1
[1] Gentoo Gentoo Gentoo Gentoo Gentoo Adelie Adelie
[8] Chinstrap Chinstrap Chinstrap
Levels: Gentoo Adelie Chinstrap
some_penguins <- c(ten_penguins$species, "Adelii")
penguin_species_list <- c("Chinstrap", "Adelie", "Gentoo", "Emperor")
some_penguins <- factor(some_penguins, levels = penguin_species_list)
some_penguins [1] Gentoo Adelie Gentoo Chinstrap Adelie Chinstrap Gentoo
[8] Gentoo Chinstrap Gentoo <NA>
Levels: Chinstrap Adelie Gentoo Emperor
fct_drop()Удалить неиспользуемые уровни фактора: Emperor.
[1] Gentoo Adelie Gentoo Chinstrap Adelie Chinstrap Gentoo
[8] Gentoo Chinstrap Gentoo <NA>
Levels: Chinstrap Adelie Gentoo
fct_na_value_to_level()Приписать отсутствующим уровням (NA) явное название.
fct_inorder()- упорядочить уровни фактора в порядке встречаемости в вектореfct_infreq() - упорядочить уровни фактора по частоте встречаемости.fct_rev() - изменить порядок уровней на обратный.fct_shuffle() - перемешать уровниfct_reorder() и fct_reorder2()Хотим изобразить распределения длин крыла и расположить ящики по убыванию медианы.
fct_reorder() 🏠fct_lump():
fct_lump_n() - оставляет n самых многочисленных уровней, остальные объединяетfct_lump_min() - оставляет уровни, встречающиеся не реже указанного числа разfct_lump_prop() - оставляет уровни, встречающиеся не чаще указанной частотыfct_lump_lowfreq() - максимально наполняет группу Other так, чтобы она все равно оставалась самой малопредставленнойСписок всех функций пакета forcats: help(package = "forcats")