Картограммы в R. Часть 1
Визуализация данных в R — крайне обширная и разнообразная тема. Существует большое количество как и самих форм презентации информации (т. е. самих видов графиков), так и пакетов, расширяющих возможности языка под отдельные задачи. В частности, R способен визуализировать пространственные данные посредством картограмм. В данном посте и пойдёт речь об этом не самом распространённом виде диаграмм.
Небольшая ремарка: подобные графики корректнее называть картограммами, а не картами, поскольку карты — это чертёж земной (в нашем случае) поверхности, а картограмма — способ изобразить статистические данные в пространстве. Но для краткости мы всё равно будем называть их «картами».
Пакеты для карт
С картами в R справится как и обычный
#пакеты для создания карт: 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 | Республика Бурятия | Сибирский федеральный округ |
Что же, теперь займёмся самым интересным — «рисовашками». Но об этом поговорим в следующей части!