Данное руководство представляет собой пошаговую инструкцию по созданию фоновой картограммы регионов России с использованием программного обеспечения RStudio. Это дополнение к заметке “Визуализация пространственных данных в R”, написанной Зиязовым Даниилом Салаватовичем и Пыжевым Антоном Игоревичем.
Мы приглашаем вас связаться с нами по электронной почте kael111133@gmail.com, если у вас возникнут вопросы или предложения.
Стандартный алгоритм создания картограмм одинаков во всех программах и состоит из следующих шагов:
Создание датафрейма с необходимой статистикой и объединение его с пустой картой. Пустая карта представляет собой таблицу с названиями географических объектов и столбцом геометрии, содержащим список координат для построения фигур. Объединение происходит на основании пересекающихся значений некоторой переменной, такой как коды ISO или просто названия регионов.
Настройка системы координат или проекции. Это позволяет избежать искажения форм объектов, взятых с поверхности глобуса, при их переносе на двумерную плоскость рисунка.
Привязка цвета или прозрачности объектов к значениям исследуемого показателя. Обычно используются сопоставимые в пространстве статистики, такие как нормированные или взвешенные на территорию или численность населения показатели структурного состава, темпов роста и т.д. Визуализация абсолютных показателей, уровень которых детерминирован географическим масштабом объектов исследования, не несет большого смысла.
Настройка оформления и сохранение рисунка.
Надеемся, что наша инструкция поможет вам создать яркие и информативные картограммы, которые станут полезным инструментом в ваших исследованиях!
Представлен схематичный алгоритм для Японских префектур. Здесь, var - значение некоего показателя, id - индекс префектуры, geom - колонка геометрии, fill - параметр заливки.
Откройте RStudio и создайте новый скрипт. Первым шагом будет установка рабочей директории. Для этого перейдите в раздел Session -> Set working directory и выберите папку, которую программа будет использовать для экспорта и импорта файлов по умолчанию.
Затем нам потребуются специализированные пакеты - наборы функций, которые помогут нам создать картограмму. Рекомендуется устанавливать и активировать их по одному, чтобы избежать сбоев на некоторых устройствах.
После того, как все пакеты будут установлены и активированы, мы можем приступать к созданию картограммы.
Для построения картограммы будем использовать данные официальной статистики о доле подростков от 14 до 17 лет, замешанных в преступных действиях.
Датасет пред обработан и размещен на портале Google Tables. Названия регионов заранее гармонизированы с одним из индикаторов территорий в файле с картой. Любой пользователь может добавить в представленную таблицу дополнительный столбец с данными и использовать ее в своих проектах.
Для загрузки данных воспользуемся функцией read.csv(), в
параметрах которой укажем ссылку на наш датасет и дополнительные
настройки прочтения файла.
url <- "https://docs.google.com/spreadsheets/d/e/2PACX-1vR__DNfANyRpFWHec9RiCf_pzORUe38WfHXpNsNAyyARXHy7dYGOPPOpROuM4vCDZA1ddH1IE1qWSyR/pub?gid=1868579171&single=true&output=csv"
data <- read.csv(url(url), header = TRUE, encoding = "UTF-8")
dataДалее, загрузим шейпфайл с картой регионов России с ресурса GADM с помощью пакета raster.
Параметр level соответствует уровню административного
деления - референс.
Для России level = 1 соответствует регионам.
Проведем некоторые преобразования с нашей фигурой регионов.
Во-первых, переведем карту в формат, знакомый R -
seample feature. Одноименный пакет функций предназначен для
работы с географическими объектами - координатными системами и
пространственными преобразованиями.
Установим исходную систему координат объекта, это нужно для того, чтобы машина понимала с чем имеет дело - обычно данные об исходной системе координат прописаны в метаданных файла и подгружаются автоматически - мы же, на всякий случай, введем этот параметр вручную, понять какая система координат свойственна объекту можно из документации провайдеров.
Далее, трансформируем систему координат объекта или crs
в подходящую для наших целей - референс для координатных
систем. Дополнительно упростим нашу карту с помощью пакета
rmapshaper и функции ms_simplify().
Отрежем ненужные переменные. Здесь возникла необходимость
конкретизировать, что нам нужна функция select() из пакета
dplyr, т.к. одноименная функция встречается в используемом
нами пакете raster, сделать это можно прописав название
пакета с оператором :: в качестве префикса функции.
library(sf)
library(rmapshaper)
library(dplyr)
library(tidyverse)
map_geom <- st_as_sf(map) %>% # Переведем карту в формат sf
st_set_crs(st_crs("EPSG:4326")) %>% # Объявляем проекцию карты
st_transform(st_crs("EPSG:20017")) %>% # Трансформируем проекцию карты
ms_simplify(keep = 0.01) %>% # Упрощаем фигуру
dplyr::select(NL_NAME_1, geometry) %>% # Отрезаем нужные переменные
rename("name" = "NL_NAME_1") %>% # Переименовываем переменные
mutate(name = ifelse(is.na(name), "Москва", name)) # Фиксим обнаруженный пропуск
plot(st_geometry(map_geom)) # Посмотрим на результат преобразованийОбъединим две таблицы с помощью функции left_join(), в
качестве параметров которой укажем имена объединяемых объектов (таблиц)
и название переменной для сопоставления.
Наконец, мы готовы рисовать карту. Наиболее популярным графическим
пакетом в R является ggplot2, позволяющий создавать
безграничное количество различных графиков и гибко настраивать их
оформление. Функция ggplot() создает координатную сетку, с
помощью ее подфункции aes() мы можем определить параметры
изменения геометрических фигур, размещенных на рисунке. В нашем случае
будет всего один параметр - цвет заливки - fill,
изменяющийся на основании нашей статистики подростковой преступности.
Функция geom_sf() выводит на рисунок полигоны регионов. В
качестве базовой настройки внешнего вида можно задать рисунку тему - референс.
library(ggplot2)
library(dplyr)
data_map %>%
ggplot(aes(fill = crime)) + # Создадим пространство рисунка
geom_sf(color = "white",
alpha = 0.8,
lwd = 0.1) + # Создадим и настроим полигоны
theme_void() # Добавим тему оформленияСохраним наш рисунок как объект, чтобы удобно настроить визуал.
Поменяем цвета и настроим легенду. Для этого воспользуемся функцией
scale_fill_continues() - настройка параметров шкалы заливки
для непрерывных данных. Параметры: low -цвет нижней
границы, high - цвет верхней границы, name -
заголовок легенды, breaks - интервалы легенды,
guide - специальные указания, обычно для настройки
легенды.
library(ggplot2)
library(scales)
plot_fill <- plot +
scale_fill_continuous(
low = "#F7EDE2",
high = "#EE6352",
name = NULL,
breaks = c(0.25,0.50,0.75,1.00),
guide = guide_legend(
label.position = "right",
label.identity = "bottom",
keyheight = 4,
keywidth = 0.4
)
)
plot_fillДобавим подписи с помощью функции labs().
library(ggplot2)
plot_labs <- plot_fill +
labs (title = "Доля (%) несовершеннолетних участников преступлений",
subtitle = "от численности детского населения в возрасте от 14 до 17 лет, 2023",
caption = "Источник: https://www.fedstat.ru/indicator/43836")
plot_labsНастроим тему с помощью функции theme() - референс.
Здесь можно настроить шрифты, определиться с размещением легенды и
подписей.
library(ggplot2)
plot_theme <- plot_labs +
theme(
text = element_text(colour = "grey40",
size = 14),
legend.position = "right",
legend.justification = "right",
legend.direction = "vertical"
)
plot_themeСохранить рисунок можно в разных форматах, для этого можно пойти в
раздел Plots -> Export. Важно попробовать разные
варианты настроек размера и разрешения экспорта, рисунок может выглядеть
по-разному. При экспорте в формате PDF, можно дополнительно поработать с
оформлением в любом векторном редакторе, например - Inkscape, Illustraitor
и т.д.