Quantcast
Channel: WP快站
Viewing all articles
Browse latest Browse all 233

Creating Animation Map

$
0
0

My issue is, I was supposed to create some animation map in R. I have very basic knowhow about R, but I love coding with it though. However, whenever I try to run my code it just gives me the below message.

Error in $<-.data.frame(*tmp*, "id", value = c(1L, 1L, 1L, 1L, 1L, :replacement has 2886 rows, data has 2826

I tried many things to fix it, but couldn't be successful anymore, so please I need help from anyone herein to support.

I have attached snapshot of my dataset as I couldn't upload the CSV format.

enter image description here

**Below is my R code:

# libraries we needlibs <- c("tidyverse", "sf","ggmap","gganimate", "classInt", "ggplot2")# install missing librariesinstalled_libs <- libs %in% rownames(installed.packages())if (any(installed_libs == FALSE)) {  install.packages(libs[!installed_libs])}# load librariesinvisible(lapply(libs, library, character.only = TRUE))
# 1. IMPORT DATA#-----------install.packages("readxl")library("readxl")setwd("D:\\R Tutorial\\Animate in R\\animate-maps-with-r-main\\animate-maps-with-r-main\\R\\Test")number_benef_df <- read_excel("Number_of_Benificiary2.xlsx")View(number_benef_df)number_benef_df_vector <- as.vector(number_benef_df)fix(number_benef_df_vector)# 2. ETH SHAPEFILE#-------------------ETH_Woreda <- st_read("draft_ETH_Admins_2024\\ETH_Woredas.shp")View(ETH_Woreda)names(ETH_Woreda)plot(sf::st_geometry(ETH_Woreda))
**# 3. JOIN DATA & SHAPEFILE**#-------------------------number_benef_sf <- dplyr::inner_join(  ETH_Woreda, number_benef_df,  by = c("admin3Pcod" = "Woreda_Pcode"))View(number_benef_sf)
**# 4. BREAKS**#----------vmin <- min(number_benef_sf$NO_Beneficiary, na.rm = T)vmax <- max(number_benef_sf$NO_Beneficiary, na.rm = T)brk <- round(classIntervals(  number_benef_sf$NO_Beneficiary,  n = 6,  style = "fisher")$brks, 1) |>  head(-1) |>  tail(-1) |>  append(vmax)breaks <- c(vmin, brk)cols <- rev(c("#001f3a", "#30314e", "#5c435f","#8d5369", "#c0636c", "#dc8177","#e6a988"))
# 5. ANIMATE#-----------get_animated_number_benef_map <- function() {  benef_map <- ggplot(    data = number_benef_sf,    aes(fill = NO_Beneficiary)  ) +    geom_sf(data = ETH_Woreda, fill = NA, size = 0.05, color = "grey70")+    geom_sf(color = "grey70", size = 0.05) +    scale_fill_gradientn(      name = "",      colours = cols,      breaks = breaks,      labels = round(breaks, 1),      limits = c(vmin, vmax),      na.value = "grey70"    ) +    coord_sf() +    guides(fill = guide_legend(      direction = "horizontal",      keyheight = unit(1.5, units = "mm"),      keywidth = unit(15, units = "mm"),      title.position = "top",      title.hjust = .5,      label.hjust = .5,      nrow = 1,      byrow = T,      reverse = F,      label.position = "bottom"    )) +    theme_minimal() +    theme(      axis.line = element_blank(),      axis.text.x = element_blank(),      axis.text.y = element_blank(),      axis.ticks = element_blank(),      axis.title.x = element_blank(),      axis.title.y = element_blank(),      legend.position = c(.5, -.015),      legend.text = element_text(size = 11, color = "grey10"),      panel.grid.major = element_line(color = "white", size = .2),      panel.grid.minor = element_blank(),      plot.title = element_text(        face = "bold", size = 20,        color = "grey10", hjust = .5, vjust = -3      ),      plot.subtitle = element_text(        size = 40, color = "#c43c4e",        hjust = .5, vjust = -1      ),      plot.caption = element_text(        size = 10, color = "grey10",        hjust = .5, vjust = -10      ),      plot.margin = unit(c(t = -.1, r = -2, b = -.1, l = -2), "lines"),      plot.background = element_rect(fill = "white", color = NA),      panel.background = element_rect(fill = "white", color = NA),      legend.background = element_rect(fill = "white", color = NA),      panel.border = element_blank()    ) +    labs(      x = "",      y = "",      title = "Benefiary Map",      #subtitle = "Year: {as.integer(closest_state)}",      caption = "©2023 Milos Popovic (https://milospopovic.net)        World Development Indicators, The World Bank"    )  return(benef_map)}benef_map <- get_animated_number_benef_map()print(benef_map)timelapse_benef_map <- benef_map +  gganimate::transition_time(    time = as.Date(Start_Year)  ) +  enter_fade() +  exit_fade() +  ease_aes("quadratic-in-out", interval = .2)animated_benef_map <- gganimate::animate(  timelapse_benef_map,  nframes = 120,  duration = 20,  start_pause = 3,  end_pause = 30,  height = 6,  width = 7.15,  res = 300,  units = "in",  fps = 15,  renderer = gifski_renderer(loop = T))gganimate::anim_save("beneficiary_map.gif", animated_benef_map)gganimate::anim_save("beneficiary_map.gif", animated_benef_map)

Viewing all articles
Browse latest Browse all 233

Trending Articles