Картограммы в R. Часть 1
2026-03-10 00:33 Diff

Теги: визуализация данных в r, картограммы, программирование на r, shape-файл, пакеты для создания карт, пакеты для обработки данных

Визуализация данных в R — крайне обширная и разнообразная тема. Существует большое количество как и самих форм презентации информации (т. е. самих видов графиков), так и пакетов, расширяющих возможности языка под отдельные задачи. В частности, R способен визуализировать пространственные данные посредством картограмм. В данном посте и пойдёт речь об этом не самом распространённом виде диаграмм.

Небольшая ремарка: подобные графики корректнее называть картограммами, а не картами, поскольку карты — это чертёж земной (в нашем случае) поверхности, а картограмма — способ изобразить статистические данные в пространстве. Но для краткости мы всё равно будем называть их «картами».

Пакеты для карт

С картами в R справится как и обычный plot(), так и средства пакетов ggplot и ggmap.

#пакеты для создания карт: library("ggplot2") library("maptools") library("tmap") library("mapproj") #пакеты для обработки данных и прочего library("rgdal") library("rgeos") library("tidyverse") library("stringr") library("RColorBrewer")

Откуда берутся карты?

Говоря простым языком, карту можно представить в виде точек, линий и многоугольников (полигонов), в зависимости от того, что именно планируется изобразить. У нас речь пойдёт про регионы, поэтому будем рисовать полигоны.

Проще всего скачать уже готовую карту и сразу начать с ней работать. В R для этой цели можно использовать файлы с расширениями .shp (shape-файлы) и geoJSON.

В качестве примера можно взять какой-нибудь свободный набор данных, например, здесь:

map_shp <- readOGR(dsn = "~/Regions/Regions.shp") ## OGR data source with driver: ESRI Shapefile ## Source: "/Users/akondrashov/Regions/Regions.shp", layer: "Regions" ## with 83 features ## It has 2 fields

Получим объект с 2 полями (название региона — субъекта и какого округу он принадлежит) и 83 записями (83 региона в России). Объект shape-файла несколько отличается от привычных в R объектов: обращаться к его полям всё ещё можно через $, однако самое важное находится в слотах — к ним можно обратиться через @.

Структуру в этой заметке мы приводить не будем, из важного заметим, что помимо названий регионов, объект содержит координаты полигонов (границ регионов), а также используемый метод проекции.

kable(head(map_shp@data, 10), caption = "Первые 10 строчек")

Первые 10 строчек

NAME ADM3_NAME 0 Курганская область Уральский федеральный округ 1 Архангельская область Северо-Западный федеральный округ 2 Ненецкий автономный округ Северо-Западный федеральный округ 3 Новгородская область Северо-Западный федеральный округ 4 Курская область Центральный федеральный округ 5 Липецкая область Центральный федеральный округ 6 Магаданская область Дальневосточный федеральный округ 7 Камчатский край Дальневосточный федеральный округ 8 Забайкальский край Сибирский федеральный округ 9 Республика Бурятия Сибирский федеральный округ

Что же, теперь займёмся самым интересным — «рисовашками». Но об этом поговорим в следующей части!