rnaturalearth
- provides access for the Natural Earth. The Natural Earth is a public domain map dataset including vector country and other administrative boundaries
sf
for setting the map object class and plot it
mapview
, tmap
, and ggplot2
for plotting the map objects
coronavirus
, covid19italy
to pull Covid19 data at different levels (e.g., region, country, etc.)
pacman::p_load(sf,
rnaturalearth,
mapview,
tmap,
# rnaturalearthhires,
rgeos,
ggplot2,
dplyr,
tidyr,
rvest,
coronavirus)
devtools::install_github("ropensci/rnaturalearthhires")
## Skipping install of 'rnaturalearthhires' from a github remote, the SHA1 (2ed7a937) has not changed since last install.
## Use `force = TRUE` to force installation
plot(x = 1,
y = 1,
ylab = "",
xlab = "",
main = "Point")
plot(x = c(1, 2, 3), y = c(1, 4, 2), type = "l")
plot(x = c(1, 2, 4, 3, 1), y = c(1, 4, 3, 1, 1), type = "l")
labels + polygons = map boarders
labels + polygons + data = choropleth map
world <- ne_countries(type = 'countries', scale = 'small', returnclass = "sf")
str(world)
## Classes 'sf' and 'data.frame': 177 obs. of 64 variables:
## $ scalerank : int 1 1 1 1 1 1 1 3 1 1 ...
## $ featurecla: chr "Admin-0 country" "Admin-0 country" "Admin-0 country" "Admin-0 country" ...
## $ labelrank : num 3 3 6 4 2 6 4 6 2 4 ...
## $ sovereignt: chr "Afghanistan" "Angola" "Albania" "United Arab Emirates" ...
## $ sov_a3 : chr "AFG" "AGO" "ALB" "ARE" ...
## $ adm0_dif : num 0 0 0 0 0 0 0 1 1 0 ...
## $ level : num 2 2 2 2 2 2 2 2 2 2 ...
## $ type : chr "Sovereign country" "Sovereign country" "Sovereign country" "Sovereign country" ...
## $ admin : chr "Afghanistan" "Angola" "Albania" "United Arab Emirates" ...
## $ adm0_a3 : chr "AFG" "AGO" "ALB" "ARE" ...
## $ geou_dif : num 0 0 0 0 0 0 0 0 0 0 ...
## $ geounit : chr "Afghanistan" "Angola" "Albania" "United Arab Emirates" ...
## $ gu_a3 : chr "AFG" "AGO" "ALB" "ARE" ...
## $ su_dif : num 0 0 0 0 0 0 0 0 0 0 ...
## $ subunit : chr "Afghanistan" "Angola" "Albania" "United Arab Emirates" ...
## $ su_a3 : chr "AFG" "AGO" "ALB" "ARE" ...
## $ brk_diff : num 0 0 0 0 0 0 0 0 0 0 ...
## $ name : chr "Afghanistan" "Angola" "Albania" "United Arab Emirates" ...
## $ name_long : chr "Afghanistan" "Angola" "Albania" "United Arab Emirates" ...
## $ brk_a3 : chr "AFG" "AGO" "ALB" "ARE" ...
## $ brk_name : chr "Afghanistan" "Angola" "Albania" "United Arab Emirates" ...
## $ brk_group : chr NA NA NA NA ...
## $ abbrev : chr "Afg." "Ang." "Alb." "U.A.E." ...
## $ postal : chr "AF" "AO" "AL" "AE" ...
## $ formal_en : chr "Islamic State of Afghanistan" "People's Republic of Angola" "Republic of Albania" "United Arab Emirates" ...
## $ formal_fr : chr NA NA NA NA ...
## $ note_adm0 : chr NA NA NA NA ...
## $ note_brk : chr NA NA NA NA ...
## $ name_sort : chr "Afghanistan" "Angola" "Albania" "United Arab Emirates" ...
## $ name_alt : chr NA NA NA NA ...
## $ mapcolor7 : num 5 3 1 2 3 3 4 7 1 3 ...
## $ mapcolor8 : num 6 2 4 1 1 1 5 5 2 1 ...
## $ mapcolor9 : num 8 6 1 3 3 2 1 9 2 3 ...
## $ mapcolor13: num 7 1 6 3 13 10 NA 11 7 4 ...
## $ pop_est : num 28400000 12799293 3639453 4798491 40913584 ...
## $ gdp_md_est: num 22270 110300 21810 184300 573900 ...
## $ pop_year : num NA NA NA NA NA NA NA NA NA NA ...
## $ lastcensus: num 1979 1970 2001 2010 2010 ...
## $ gdp_year : num NA NA NA NA NA NA NA NA NA NA ...
## $ economy : chr "7. Least developed region" "7. Least developed region" "6. Developing region" "6. Developing region" ...
## $ income_grp: chr "5. Low income" "3. Upper middle income" "4. Lower middle income" "2. High income: nonOECD" ...
## $ wikipedia : num NA NA NA NA NA NA NA NA NA NA ...
## $ fips_10 : chr NA NA NA NA ...
## $ iso_a2 : chr "AF" "AO" "AL" "AE" ...
## $ iso_a3 : chr "AFG" "AGO" "ALB" "ARE" ...
## $ iso_n3 : chr "004" "024" "008" "784" ...
## $ un_a3 : chr "004" "024" "008" "784" ...
## $ wb_a2 : chr "AF" "AO" "AL" "AE" ...
## $ wb_a3 : chr "AFG" "AGO" "ALB" "ARE" ...
## $ woe_id : num NA NA NA NA NA NA NA NA NA NA ...
## $ adm0_a3_is: chr "AFG" "AGO" "ALB" "ARE" ...
## $ adm0_a3_us: chr "AFG" "AGO" "ALB" "ARE" ...
## $ adm0_a3_un: num NA NA NA NA NA NA NA NA NA NA ...
## $ adm0_a3_wb: num NA NA NA NA NA NA NA NA NA NA ...
## $ continent : chr "Asia" "Africa" "Europe" "Asia" ...
## $ region_un : chr "Asia" "Africa" "Europe" "Asia" ...
## $ subregion : chr "Southern Asia" "Middle Africa" "Southern Europe" "Western Asia" ...
## $ region_wb : chr "South Asia" "Sub-Saharan Africa" "Europe & Central Asia" "Middle East & North Africa" ...
## $ name_len : num 11 6 7 20 9 7 10 22 9 7 ...
## $ long_len : num 11 6 7 20 9 7 10 35 9 7 ...
## $ abbrev_len: num 4 4 4 6 4 4 4 10 4 5 ...
## $ tiny : num NA NA NA NA NA NA NA 2 NA NA ...
## $ homepart : num 1 1 1 1 1 1 1 NA 1 1 ...
## $ geometry :sfc_MULTIPOLYGON of length 177; first list element: List of 1
## ..$ :List of 1
## .. ..$ : num [1:69, 1:2] 61.2 62.2 63 63.2 64 ...
## ..- attr(*, "class")= chr [1:3] "XY" "MULTIPOLYGON" "sfg"
## - attr(*, "sf_column")= chr "geometry"
## - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA NA NA NA NA NA ...
## ..- attr(*, "names")= chr [1:63] "scalerank" "featurecla" "labelrank" "sovereignt" ...
head(world)
plot(world$geometry)
africa <- world %>%
filter(continent == "Africa")
plot(africa$geometry)
w_africa <- world %>%
filter(subregion == "Western Africa")
plot(
w_africa$geometry,
col = sf.colors(12, categorical = TRUE),
border = 'grey',
axes = TRUE,
main = "Western Africa"
)
nigeria <- ne_states(country = "Nigeria", returnclass = "sf")
head(nigeria)
plot(nigeria$geometry, col = sf.colors(37, categorical = TRUE), border = 'grey',
axes = TRUE, main = "Nigeria")
url <- "https://en.wikipedia.org/wiki/List_of_Nigerian_states_by_population"
page <- read_html(url)
tables <- html_node(page, ".wikitable")
pop_table <- html_table(tables, fill = TRUE) %>%
select(state_temp = State, pop_2006_temp = `Population (2006)`, pop_2016_temp = `Population (2016)`)
pop_table$pop_2006 <- as.numeric(gsub(x = pop_table$pop_2006_temp,pattern = ",", replacement = ""))
pop_table$pop_2016 <- as.numeric(gsub(x = pop_table$pop_2016_temp,pattern = ",", replacement = ""))
pop_table$state <- gsub(x = pop_table$state_temp,pattern = " State", replacement = "")
pop_table <- pop_table %>% select(-state_temp, -pop_2006_temp, - pop_2016_temp) %>%
select(state, pop_2006, pop_2016) %>%
mutate(state_fix = state)
pop_table$state_fix[which(pop_table$state_fix == "Nasarawa")] <- "Nassarawa"
head(pop_table)
nigeria_pop <- nigeria %>%
left_join(pop_table, by = c("name" = "state_fix"))
plot(nigeria_pop["pop_2016"], key.pos = 1, axes = TRUE, key.width = lcm(1.3), key.length = 1.0)
tm_shape(nigeria_pop) +
tm_polygons(col = "pop_2016",
style = "order",
title = "Population",
palette = "Blues") +
tm_style("cobalt") +
tm_text("state", size = 0.7) +
tm_credits("Source: Wikipedia - List of Nigerian states by population",
position = c("LEFT", "BOTTOM")) +
tm_layout(title= "Nigeria Population by States",
title.position = c('right', 'top') ,
inner.margins = c(0.02, .02, .1, .15))
covid19_daily <- refresh_coronavirus_jhu()
head(covid19_daily)
df <- covid19_daily %>%
filter(location_type == "country") %>%
group_by(location, data_type) %>%
summarise(cases = sum(value),
.groups = "drop") %>%
pivot_wider(names_from = data_type, values_from = cases) %>%
setNames(c("country", "total_cases", "total_death"))
head(df)
df1 <- covid19_daily %>%
filter(location_type == "country") %>%
group_by(location, location_code, data_type) %>%
summarise(cases = sum(value),
.groups = "drop") %>%
pivot_wider(names_from = data_type, values_from = cases) %>%
setNames(c("country", "total_cases", "total_death"))
world_covid <- world %>%
select(country = sovereignt, geometry) %>%
left_join(df, by = "country")
plot(world_covid)
plot(world_covid[, c("total_cases")])
world <- ne_countries(type = 'countries', scale = 'large')
sp::plot(world)
## Warning in wkt(obj): CRS object has no comment
world <- ne_countries(type = 'countries', scale = 'small', returnclass = "sf")
world$random <- stats::rnorm(n = nrow(world))
sf::plot_sf(world)
sp::plot(world[, "random"])
sp::plot(world[which(world$region_un == "Africa"), "random"])
x1 <- rnaturalearth::ne_countries(country = 'Nigeria', type='countries')
sp::plot(x1)
## Warning in wkt(obj): CRS object has no comment
# x2 <- rnaturalearth::ne_states(country = 'Nigeria')