Картограмма — это карта, на которой геометрия регионов искажена, чтобы передать информацию об альтернативной переменной. В этом посте мы собираемся нарисовать карту Африки, где размер каждой страны искажен пропорционально ее населению. Картограмма часто представляет собой картограмму, на которой области окрашены в соответствии с числовым значением (не обязательно тем, которое использовалось для построения картограммы). Чтобы легче понять картограмму, можно обратиться к тому, что такое геопространственный объект.
Подготовка данных карты и создание базовой картограммы
Чтобы создать карту картограммы, мы создадим данные карты, используя wrld_simpl.
р
# library for the map data
library
(maptools)
data
(wrld_simpl)
# extracting the African map data
# this data contains the latitude and longitude of
# region boundaries and regions
afr = wrld_simpl[wrld_simpl$REGION==2,]
# plotting outline map
plot
(afr)
Выход:
Пространственные полигональные объекты в Cartogram
У нас есть пространственный объект и числовое значение, связанное с каждым регионом, можно раскрасить каждый регион в соответствии с его значением.
р
library
(sf)
# library to get the SpatialPolygon
afr_sf =
st_as_sf
(afr)
plot
(afr_sf)
Выход:
Картограмма и ее настройка
Здесь мы создадим картограмму, а затем настроим для этого использование wrld_simpl, а затем извлечем информацию, такую как форма, координаты, а затем преобразуем геометрические полигональные объекты в новые геопространственные объекты.
р
library
(tidyverse)
# Get the shape file of Africa
library
(maptools)
# retrieve the data for the countries
data
(wrld_simpl)
# extract the data for Africa
# afr_data holds the data about the African polygon shape
# and information like cordinates, latitude and longitude
afr_data = wrld_simpl[wrld_simpl$REGION == 2,]
cat
(
"Type of afr_data: "
,
typeof
(afr_data),
"\n\n"
)
# We work with the cartogram library
library
(cartogram)
# s4 is an system for object oriented programming
# convert this foreign object to sf object
sfno =
st_as_sf
(afr)
# transform geometry polygon objects to a new coordinate reference system
sfnoproj =
st_transform
(sfno, crs = 23038)
# construct a cartogram using the population in 2005
afr_cartogram <-
cartogram_cont
(sfnoproj,
"POP2005"
, itermax = 7)
# This is a new geospatial object, we can visualise it!
ggplot
() +
geom_sf
(data = afr_cartogram,
aes
(fill = POP2005))
Выход:
Type of afr_data: S4 Mean size error for iteration 1: 6.65362274402649 Mean size error for iteration 2: 5.77932593731838 Mean size error for iteration 3: 5.11349284302375 Mean size error for iteration 4: 4.56333360251358 Mean size error for iteration 5: 4.09786807153034 Mean size error for iteration 6: 3.69769020137334 Mean size error for iteration 7: 3.3519304681889