Возьмите встроенный датасет msleep
- в нем содержится
информация о времени сна и бодрствования различных животных. Больше
информации об этом датасете можно узнать в справке
?msleep
.
С помощью диаграммы рассеяния изобразите зависимость общей
длительности сна (sleep_total
) от логарифма веса животного
(bodywt
). Пояснения:
vore
).Сохраните график в подходящем размере и удобном вам формате.
ggplot(msleep) +
aes(x = log(bodywt), y = sleep_total, colour = vore) +
geom_point() +
scale_colour_discrete(breaks=c('omni', 'insecti', 'herbi', 'carni'),
labels=c('Omnivore', 'Insectivore', 'Herbivore', 'Carnivore')) +
labs(x = "Log of body weight (kg)", y = "Total sleep (h)", title = "Bigger animals sleep less") +
theme_bw() +
theme(legend.position = "top",
legend.title= element_blank(),
plot.title = element_text(hjust = 0.5))
Возьмите встроенный датасет starwars
- в нем содержится
информация о персонажах вселенной Звездные Войны. Больше информации об
этом датасете можно узнать в справке ?starwars
.
Отберите 2 планеты (homeworld
), которые являются родиной
самого большого количества героев ЗВ. Отберите только тех персонажей,
которые происходят с этих двух планет, и постройте график дотплот (с
помощью функции geom_point()
), который бы показывал вес
(mass
) персонажей разных рас (species
). По оси
X - вес тела, по Y - раса (species
), каждая точка - один
персонаж. Цветом точки покажите гендерную идентичность героя
(gender
) информацию о расе, размером точки - его рост
(height
).
Подпишите оси, добавьте название графика и подберите цветовую палитру.
Сохраните график в подходящем размере и удобном вам формате.
starwars %>%
drop_na(homeworld, species, gender, mass, height) %>%
mutate(homeworld_factor = fct_lump_n(factor(homeworld), n = 2)) %>%
filter(homeworld_factor != "Other") %>%
ggplot() +
aes(x = mass, y = species, fill = gender, size = height) +
geom_point(shape = 21) +
labs(x = "Body mass (kg)",
y = "Species",
fill = "Gender identity",
size = "Height (cm)",
title = "Star Wars characters' weight") +
theme_bw() +
theme(legend.position = "right",
legend.title = element_text(hjust = 0.5),
plot.title = element_text(hjust = 0.5))
Прочитайте датасет о напитках из Старбакса по ссылке 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
- содержание кофеина (мг).Отберите только напитки, подходящие под следующие условия:
С помощью диаграммы рассеяния изобразите зависимость содержание
кофеина (caffeine_mg
) от калорийности напитка
(calories
). Цветом обозначьте тип молока.
На графике обозначьте пунктирной линией (используйте
geom_hline(..., linetype = "dashed")
, например) самое
частое (мода) для отобранных напитков значение содержания кофеина.
Поменяйте порядок задаваемых геометрических объектов
(geom_*
), чтобы линия проходила под точками.
Поменяйте отображаемые по осям значения так, чтобы интервал между
ними составлял 50. Это можно сделать с помощью
scale_x_continuous(breaks = *вектор с отображаемыми значениями*)
и
scale_y_continuous(breaks = *вектор с отображаемыми значениями*)
.
Пусть в легенде будут перечислены категории напитков следующим образом:
Подпишите оси, добавьте название графика и подберите цветовую палитру.
Сохраните график в подходящем размере и удобном вам формате.
df <- read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2021/2021-12-21/starbucks.csv")
## Rows: 1147 Columns: 15
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (4): product_name, size, trans_fat_g, fiber_g
## dbl (11): milk, whip, serv_size_m_l, calories, total_fat_g, saturated_fat_g,...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
df_1 <- df %>%
filter(milk %in% c(0, 2, 3),
serv_size_m_l == 473,
calories != 0,
caffeine_mg != 0) %>%
mutate(milk = as.factor(milk))
caffeine_mg_mode <- mode <- as.numeric(levels(fct_infreq(as_factor(df_1$caffeine_mg)))[1])
df_1 %>%
ggplot() +
aes(x = calories, y = caffeine_mg, colour = milk) +
geom_hline(yintercept = caffeine_mg_mode, linetype = "dashed") +
geom_point() +
scale_x_continuous(breaks = seq(0, max(df$calories), 50)) +
scale_y_continuous(breaks = seq(0, max(df$caffeine_mg), 50)) +
labs(x = "KCal",
y = "Caffeine (mg)",
colour = "Type of milk",
title = "Starbucks coffee") +
scale_colour_discrete(breaks=c(0, 2, 3),
labels=c('no milk', '2% milk', 'soy milk')) +
theme_bw() +
theme(legend.position = "right",
legend.title = element_text(hjust = 0.5),
plot.title = element_text(hjust = 0.5))
Использйуте датасет про напитки из Старбакса из задания 2.
На одном графике постройте гитограмму и плотность распределения
содержания сахара во всех напитках. geom_histogram
и
geom_density
преобразовывают ваши данные и отрисовывают
либо каунты, либо плотность. Найдите способ, чтобы оба
geom_
отрисовывали значения по оси Y согласованно.
Подпишите оси, добавьте название графика. Подберите цветовую палитру.
Сохраните график в подходящем размере и удобном вам формате.
#цвета на графике должны передовать всю ту боль, что вызывает у меня ДЗ по R
graf <- df %>%
ggplot() +
aes(x = sugar_g) +
geom_histogram(bins = 45, color = "#00FF00", fill = "#FFFF00") +
geom_density(aes(y = after_stat(count)),
fill = "#FF0000", alpha = 0.2, color = "#FF00FF") +
labs(title = "Sugar content in Starbucks drinks",
x = "Sugar (g)", y = "Count") +
theme_bw() +
theme(legend.position = "right",
legend.title = element_text(hjust = 0.5),
plot.title = element_text(hjust = 0.5))
ggsave("./4.png", plot = graf)
## Saving 7 x 5 in image
graf
Загрузите датасет, содержащий информацию про цветение сакуры в Японии за 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.
Информация про датасет:
Визуализируйте, как шел фронт цветения сакуры в Японии в разные годы,
с помощью линейного графика - используйте geom_line
. По
горизонтали отложите года, по вертикали - дату или день начала
цветения/полного цвета. Каждая кривая - это один город. Не забудьте
сообщить, что вы решили визуализировать (какие переменные), в названиях
осей и в названии графика.
Сохраните график в подходящем размере и удобном вам формате.
Примечания:
group = station_name
.Есть несколько способов, как можно “подсветить” одну линию. Предлагаю
воспользоваться одним из них или придумать свой. Вариант
1. Разделите датасет на 2: с выбранным городом и с остальными
городами. В графике используйте geom_line
дважды с этими
двумя новыми датасетами (data = ...
). Для каждого
geom_line
укажите свой цвет/прозрачность/что-то еще.
Вариант 2. Создайте новый столбец, где будут 2 значения: ваш город и остальные города. Используйте этот столбец, чтобы задать 2 цвета. Иногда бывает удобно создавать столбец сразу со значениями цветов/уровней прозрачности и др. и напрямую использовать их в качестве aesthetic.
Вариант 3. Поищите R пакеты, которые помогают легко решить эту задачу. Например, есть пакет {gghighlight} (он не входит в {tidyverse}, его нужно устанавливать отдельно).
df <- read_csv("https://raw.githubusercontent.com/tacookson/data/master/sakura-flowering/sakura-modern.csv")
## Rows: 6700 Columns: 9
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): station_name
## dbl (6): station_id, latitude, longitude, year, flower_doy, full_bloom_doy
## date (2): flower_date, full_bloom_date
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
graf <- df %>%
mutate(city_alpha = ifelse(station_name == "Tokyo", 1, 0.01)) %>%
ggplot() +
geom_line(lwd = 1) +
aes(x = year, y = full_bloom_doy, group = station_name, alpha = city_alpha, colour = "red") +
labs(title = "Full sakura bloom in Tokyo and other Japan cities",
x = "Year", y = "Day of year of full bloom") +
theme_bw() +
theme(legend.position = "none",
legend.title = element_text(hjust = 0.5),
plot.title = element_text(hjust = 0.5))
ggsave("./5.png", plot = graf)
## Saving 7 x 5 in image
## Warning: Removed 848 rows containing missing values (`geom_line()`).
graf
## Warning: Removed 848 rows containing missing values (`geom_line()`).