Использование шейп-файла для заполнения geom_polygon

Я пытаюсь составить хлороплетную карту населения Нигерии. Для этого я скачал данные о населении из пакета wopr

library(remotes)
remotes::install_github('wpgp/wopr')
library(wopr)

catalogue <- getCatalogue()
selection <- subset(catalogue,
                    country == 'NGA' &
                      category == 'Population' & 
                      version == 'v1.2')
downloadData(selection)

Затем я разархивировал загруженные данные и прочитал файл .shp, который также содержит данные о среднем населении административного уровня 3 в Нигерии.

library(rgdal)

shape <- readOGR(here::here("wopr/NGA/population/v1.2/NGA_population_v1_2_admin/NGA_population_v1_2_admin_level3_boundaries.shp"))

форма

class       : SpatialPolygonsDataFrame 
features    : 774 
extent      : 2.6925, 14.67797, 4.271484, 13.88571  (xmin, xmax, ymin, ymax)
crs         : +proj=longlat +datum=WGS84 +no_defs 
variables   : 18
names       : lgacode,   lganame, statecode,          source,               timestamp,                             globalid,    amapcode,   id, statename, region,         mean,       q025,       q05,       q25,     q50, ... 
min values  :   10001, Aba North,        AB, abraham.oluseye, 2015/08/08 11:30:41.000, 000fac93-f92b-4f2b-a003-03318fe407c1, NIE ABS ABA, 2845,      Abia,      1,     252.3734,        115,       136,       195,     237, ... 
max values  :    9018,      Zuru,        ZA,             WHO, 2018/08/07 08:35:09.000, ff682d23-27fa-4395-8b26-d2bc5803e7c2, NIE ZAS ZRM, 3664,   Zamfara,     11, 2181858.3981, 1622184.45, 1662922.4, 1834489.5, 2096976, ... 

голова (форма@данные)

  lgacode          lganame statecode      source               timestamp
0   27011        Kontagora        NI EHA_ABRAHAM 2017/01/22 15:55:38.000
1   27015           Mariga        NI EHA_ABRAHAM 2017/01/25 18:08:13.000
2   25004     Amuwo Odofin        LA NGA_TEAMGIS 2018/08/07 08:35:09.000
3   25002 Ajeromi Ifelodun        LA NGA_TEAMGIS 2018/08/07 08:35:09.000
4   25018         Surulere        LA EHA-OLUSEYE 2016/05/10 14:03:50.000
5   31014              Ido        OY EHA-ABRAHAM 2016/11/02 10:39:49.000
                              globalid    amapcode   id statename region     mean
0 74b7e7e5-66fb-4a11-961f-f66b657df869 NIE NIS KNT 3618     Niger      2 235330.7
1 344d9dce-9643-4c16-a1f0-595d97dea13c NIE NIS BMG 3619     Niger      2 373467.9
2 2a5b0ca2-4065-45f2-9a2f-2545dc1fe9c3 NIE LAS FST 3635     Lagos     11 377541.3
3 b44f187e-1ebd-4ef3-9bc3-3e2be785e640 NIE LAS AGL 3636     Lagos     11 314222.6
4 95c41101-4143-4abf-8adb-f63b79b09555 NIE LAS LSR 3637     Lagos     11 118282.3
5 6777fa86-afd3-4532-bf38-d897dce835d3 NIE OYS DDA 3620       Oyo      7 531508.6
      q025       q05      q25      q50      q75      q95     q975
0 153685.4 163240.50 196365.8 225030.0 260180.2 341048.0 378108.2
1 159215.6 182313.50 270608.8 338850.0 435652.8 668303.5 775215.3
2 284024.3 296227.30 333860.8 367006.5 408052.5 493519.2 529741.5
3 183500.2 198570.15 252164.5 300170.5 358764.5 475849.5 527268.7
4  69839.8  75569.75  95543.5 112952.5 134939.2 178012.4 196889.1
5 435055.2 448660.55 492885.5 525545.5 563986.0 631545.6 659961.0

Я хочу начертить границу Нигерии и заполнить административное деление уровня 3 по населению (shape@data$mean)

library(ggplot2)
ggplot(data = shape) +
  geom_polygon(aes(x = long, y = lat, group = group, fill = mean))

Но я получаю сообщение об ошибке «Ошибка: эстетика должна быть допустимым столбцом данных. Проблемная эстетика (ы): fill = mean. Вы опечатались в имени столбца данных или забыли добавить after_stat ()?»

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
168
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как вариант, можно использовать пакет sf, который идеально подходит для такой работы.

Просто добавьте шаг для преобразования файла, который вы только что прочитали с помощью rgdal, в sf, а затем используйте функцию geom_sf для построения желаемых границ.

# install.packages("sf")
library(tidyverse)
shape %>% 
  sf::st_as_sf() %>% 
  ggplot(aes(fill = mean)) +
  geom_sf()

Другие вопросы по теме