Анализ погоды за последнюю неделю
Материал из Поле цифровой дидактики
Описание проекта
Анализ погоды за последнюю неделю.
library(httr)
library(jsonlite)
library(ggplot2)
library(dplyr)
library(patchwork)
options(encoding = "UTF-8")
start_date <- as.character(Sys.Date() - 8) # Начало периода (7 дней назад)
end_date <- as.character(Sys.Date() - 1) # Конец периода (вчера)
url <- paste0(
"https://archive-api.open-meteo.com/v1/archive?",
"latitude=55.7558&longitude=37.6173",
"&start_date=", start_date,
"&end_date=", end_date,
"&hourly=temperature_2m,precipitation,cloudcover,windspeed_10m",
"&timezone=Europe/Moscow"
)
res <- GET(url) # Отправка запроса
stop_for_status(res) # Остановка, если ошибка
text <- content(res, "text", encoding = "UTF-8") # Извлекаем текст ответа
json <- fromJSON(text)
df <- data.frame(
datetime = json$hourly$time,
temp = json$hourly$temperature_2m,
precip = json$hourly$precipitation,
cloud = json$hourly$cloudcover,
wind = json$hourly$windspeed_10m
)
df$datetime <- as.POSIXct(df$datetime, format = "%Y-%m-%dT%H:%M", tz = "Europe/Moscow")
df$date <- as.Date(df$datetime) # Выделяем дату
df$hour <- format(df$datetime, "%H:%M") # Выделяем час
df_table <- df %>%
select(date, hour, temp, precip, cloud, wind) %>% # Выбираем нужные колонки
arrange(date, hour) # Сортировка по времени
print(head(df_table, 20)) # Вывод первых строк
View(df_table) # открытие таблицы
# Графики
plot_temp <- ggplot(df, aes(datetime, temp)) +
geom_line(color = "red") +
theme_minimal() +
labs(title = "Температура (7 дней)", x = "", y = "°C")
plot_precip <- ggplot(df, aes(datetime, precip)) +
geom_col(fill = "blue") +
theme_minimal() +
labs(title = "Осадки (7 дней)", x = "", y = "mm")
plot_cloud <- ggplot(df, aes(datetime, cloud)) +
geom_line(color = "gray40") +
theme_minimal() +
labs(title = "Облачность (7 дней)", x = "", y = "%")
plot_wind <- ggplot(df, aes(datetime, wind)) +
geom_line(color = "darkgreen") +
theme_minimal() +
labs(title = "Ветер (7 дней)", x = "", y = "m/s")
final_plot <- (plot_temp | plot_precip) / # Объединение графиков
(plot_cloud | plot_wind)
print(final_plot)
ggsave("moscow_weather_7days.png", # Сохранение картинки
final_plot,
width = 14,
height = 10)
Результаты


