Домашнее задание №4

ФББ - R - 2023

Автор

Анна Валяева

Дата публикации

22 сентября 2023 г.

Дедлайн - 8 октября 2023 23:59

Инструкция

При выполнении заданий используйте средства пакета tidyverse.

Обратите особое внимание на оформление домашнего задания и правила, озвученные на занятии.

Приводите весь код, который вам понадобился для получения ответа.

В файле приведены примеры графиков, которые вы должны получить в задании. Точно воспроизводить их не нужно, они нужны на случай, если вы запутаетесь в задании.

На основании заполненного .Rmd файла создайте .html файл.

Присылать заполненные .Rmd тетрадки и .html файл необходимо через гугл-форму.

Задание 1

Возьмите встроенный датасет msleep - в нем содержится информация о времени сна и бодрствования различных животных. Больше информации об этом датасете можно узнать в справке ?msleep.

С помощью диаграммы рассеяния изобразите зависимость общей длительности сна (sleep_total) от логарифма веса животного (bodywt). Пояснения:

  • Цветом обозначьте, чем животное питается (vore).
  • Измените порядок названий категорий в легенде (на любой отличный от дефолтного).
  • Переместите легенду наверх графика.
  • Подпишите оси, добавьте название графика.
  • Подберите цветовую палитру.

Сохраните график в подходящем размере и удобном вам формате.

Задание 2

Возьмите встроенный датасет starwars - в нем содержится информация о персонажах вселенной Звездные Войны. Больше информации об этом датасете можно узнать в справке ?starwars.

Отберите 2 планеты (homeworld), которые являются родиной самого большого количества героев ЗВ. Отберите только тех персонажей, которые происходят с этих двух планет, и постройте график дотплот (с помощью функции geom_point()), который бы показывал вес (mass) персонажей разных рас (species). По оси X - вес тела, по Y - раса (species), каждая точка - один персонаж. Цветом точки покажите гендерную идентичность героя (gender) информацию о расе, размером точки - его рост (height).

Подпишите оси, добавьте название графика и подберите цветовую палитру.

Сохраните график в подходящем размере и удобном вам формате.

Warning: Removed 5 rows containing missing values (`geom_point()`).

Задание 3

Прочитайте датасет о напитках из Старбакса по ссылке https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2021/2021-12-21/starbucks.csv.

В этом датасете содержатся столбцы:

  • product_name - наименование напитка,
  • size - размер (категория),
  • milk - тип молока:
    • 0 - без молока,
    • 1 - обезжиренное молоко,
    • 2 - 2% молоко,
    • 3 - соевое молоко,
    • 4 - кокосовое молоко,
    • 5 - цельное молоко,
  • whip - добавляют ли сливки (0/1),
  • serv_size_m_l - объем напитка (мл),
  • calories - калории (ккал),
  • total_fat_g - содержание жира (г),
  • saturated_fat_g - содержание насыщенных жиров (г),
  • trans_fat_g - содержание транс-жиров (г),
  • cholesterol_mg - содержание холестерина (мг),
  • sodium_mg - содержание натрия (мг),
  • total_carbs_g - содержание углеводов (г),
  • fiber_g- содержание пищевых волокон (г),
  • sugar_g - содержание сахара (г),
  • caffeine_mg - содержание кофеина (мг).

Отберите только напитки, подходящие под следующие условия:

  • напитки, приготовляемые без молока, 2% молоке или соевом молоке,
  • напитки объемом 473 мл,
  • не бескалорийные напитки,
  • напитки, содержащие кофеин.

С помощью диаграммы рассеяния изобразите зависимость содержание кофеина (caffeine_mg) от калорийности напитка (calories). Цветом обозначьте тип молока.

На графике обозначьте пунктирной линией (используйте geom_hline(..., linetype = "dashed"), например) самое частое (мода) для отобранных напитков значение содержания кофеина. Поменяйте порядок задаваемых геометрических объектов (geom_*), чтобы линия проходила под точками.

Поменяйте отображаемые по осям значения так, чтобы интервал между ними составлял 50. Это можно сделать с помощью scale_x_continuous(breaks = *вектор с отображаемыми значениями*) и scale_y_continuous(breaks = *вектор с отображаемыми значениями*).

Пусть в легенде будут перечислены категории напитков следующим образом:

  • напитки без молока - no milk
  • напитки на 2% молоке - 2% milk
  • напитки на соевом молоке - soy milk

Подпишите оси, добавьте название графика и подберите цветовую палитру.

Сохраните график в подходящем размере и удобном вам формате.

Задание 4

Использйуте датасет про напитки из Старбакса из задания 2.

На одном графике постройте гитограмму и плотность распределения содержания сахара во всех напитках. geom_histogram и geom_density преобразовывают ваши данные и отрисовывают либо каунты, либо плотность. Найдите способ, чтобы оба geom_ отрисовывали значения по оси Y согласованно.

Подпишите оси, добавьте название графика. Подберите цветовую палитру.

Сохраните график в подходящем размере и удобном вам формате.

Задание 5

Загрузите датасет, содержащий информацию про цветение сакуры в Японии за 1953-2019 года. https://raw.githubusercontent.com/tacookson/data/master/sakura-flowering/sakura-modern.csv.

Изучите датасет! Про него можно прочитать дополнительно, например, здесь: https://github.com/tacookson/data/blob/master/sakura-flowering/README.md.

Информация про датасет:

  • station_id - ID метеостанции (города),
  • station_name - название города, где эта метеостанция расположена,
  • latitude, longitude - широта и долгота метеостанции,
  • year - год,
  • flower_date - дата начала цветения сакуры,
  • flower_doy - день с начала года, когда началось цветение сакуры,
  • full_bloom_date - дата полного цвета сакуры,
  • full_bloom_doy - день с начала года, на который пришелся полный цвет сакуры.

Визуализируйте, как шел фронт цветения сакуры в Японии в разные годы, с помощью линейного графика - используйте geom_line. По горизонтали отложите года, по вертикали - дату или день начала цветения/полного цвета. Каждая кривая - это один город. Не забудьте сообщить, что вы решили визуализировать (какие переменные), в названиях осей и в названии графика.

Сохраните график в подходящем размере и удобном вам формате.

Примечания:

  1. Кривая - это набор точек, соединенных линиями. Поэтому чтобы точки правильно соединились в кривые по городам, укажите aesthetic group = station_name.
  2. Если вам мешают отсутствующие значения данных, избавьтесь от них.
  3. Чтобы сделать график интереснее, подсветите кривую одного из городов, какой вам больше интересен, например, Kyoto. Сделайте так, чтобы кривая этого города была ярче, чем остальные кривые. Это можно сделать, подобрав цвета или прозрачность. Или и то, и другое :)

Есть несколько способов, как можно “подсветить” одну линию. Предлагаю воспользоваться одним из них или придумать свой. Вариант 1. Разделите датасет на 2: с выбранным городом и с остальными городами. В графике используйте geom_line дважды с этими двумя новыми датасетами (data = ...). Для каждого geom_line укажите свой цвет/прозрачность/что-то еще.

Вариант 2. Создайте новый столбец, где будут 2 значения: ваш город и остальные города. Используйте этот столбец, чтобы задать 2 цвета. Иногда бывает удобно создавать столбец сразу со значениями цветов/уровней прозрачности и др. и напрямую использовать их в качестве aesthetic.

Вариант 3. Поищите R пакеты, которые помогают легко решить эту задачу. Например, есть пакет {gghighlight} (он не входит в {tidyverse}, его нужно устанавливать отдельно).