Домашнее задание 18

Author

Курганов Ярослав

Published

April 5, 2026

Импортируем библиотеки и добавляем датасет:

library(tidyverse)
library(leaflet)
library(sf)

# 1. Загрузка данных (проверь, что пути верные!)
load("~/Yandex.Disk.localized/libraries_stat_2023.Rdata") 
load("~/Yandex.Disk.localized/libs_sf (1).Rdata")         

# 2. Создание иконки (ВАЖНО: До вызова leaflet)
# Попробуй указать полный путь или убедись, что файл в корне проекта
icon_path <- "~/Yandex.Disk.localized/иконка дз.jpg" 

# Проверка: если файл не найден, R выдаст предупреждение в консоль
if(!file.exists(icon_path)) {
  message("ВНИМАНИЕ: Файл иконки не найден по пути: ", getwd(), "/", icon_path)
}

my_icon <- makeIcon(
  iconUrl = icon_path,
  iconWidth = 30, 
  iconHeight = 30,
  iconAnchorX = 15, 
  iconAnchorY = 30
)

# 3. Палитра
pal <- colorNumeric(palette = "YlOrRd", domain = libraries_stat_2023$density)

# 4. Сборка карты
map <- leaflet() %>%
  addTiles() %>%
  # Слой регионов
  addPolygons(
    data = libraries_stat_2023,
    fillColor = ~pal(density),
    weight = 1, color = "white", fillOpacity = 0.7,
    label = ~paste0(region, ": ", density)
  ) %>%
  # Слой точек (проверь аргумент icon!)
  addMarkers(
    data = libs_sf,
    icon = my_icon, # Используем созданный выше объект
    clusterOptions = markerClusterOptions(),
    popup = ~paste0("<b>", name, "</b><br>", address)
  ) %>%
  addLegend(
    data = libraries_stat_2023,
    pal = pal, values = ~density,
    title = "Библиотек на 1000 чел.", position = "bottomright"
  ) %>%
  addScaleBar(position = "bottomleft")

# Отображаем результат
map