Automatizando la producción de mapas de círculo grande en R

He tomado algunas de las cosas que aprendí en un Flowing Datagran tutorial de mapeo de círculos y los combinó con el código vinculado en los comentarios para evitar que sucedan cosas extrañas cuando R traza grandes círculos trans-ecuatoriales. Eso me da esto:

airports <- read.csv("/home/geoff/Desktop/DissertationData/airports.csv", header=TRUE) 
flights <- read.csv("/home/geoff/Desktop/DissertationData/ATL.csv", header=TRUE, as.is=TRUE)

library(maps)
library(geosphere)

checkDateLine <- function(l){
  n<-0
  k<-length(l)
  k<-k-1
  for (j in 1:k){
    n[j] <- l[j+1] - l[j]
  }
  n <- abs(n)
  m<-max(n, rm.na=TRUE)
  ifelse(m > 30, TRUE, FALSE)
}
clean.Inter <- function(p1, p2, n, addStartEnd){
  inter <- gcIntermediate(p1, p2, n=n, addStartEnd=addStartEnd)
  if (checkDateLine(inter[,1])){
    m1 <- midPoint(p1, p2)
    m1[,1] <- (m1[,1]+180)%%360 - 180
    a1 <- antipode(m1)
    l1 <- gcIntermediate(p1, a1, n=n, addStartEnd=addStartEnd)
    l2 <- gcIntermediate(a1, p2, n=n, addStartEnd=addStartEnd)
    l3 <- rbind(l1, l2)
    l3
  }
  else{
    inter
  }
}

# Unique months
monthyear <- unique(flights$month)

# Color
pal <- colorRampPalette(c("#FFEA00", "#FF0043"))
colors <- pal(100)

for (i in 1:length(monthyear)) {

png(paste("monthyear", monthyear[i], ".png", sep=""), width=750, height=500)
map("world", col="#191919", fill=TRUE, bg="black", lwd=0.05)

fsub <- flights[flights$month == monthyear[i],]
fsub <- fsub[order(fsub$cnt),]
maxcnt <- max(fsub$cnt)
for (j in 1:length(fsub$month)) {
  air1 <- airports[airports$iata == fsub[j,]$airport1,]
  air2 <- airports[airports$iata == fsub[j,]$airport2,]
  p1 <- c(air1[1,]$long, air1[1,]$lat)
  p2 <- c(air2[1,]$long, air2[1,]$lat)
  inter <- clean.Inter(p1,p2,n=100, addStartEnd=TRUE)
  colindex <- round( (fsub[j,]$cnt / maxcnt) * length(colors) )
  lines(inter, col=colors[colindex], lwd=1.0)
}
  dev.off()
}

Me gustaría automatizar la producción de mapas para un gran conjunto de datos que contiene todas las rutas comerciales programadas -dummy sample: Compartido entre ATL y otros aeropuertos en la red global (airports.csv está vinculado en la publicación Flowing Data). Preferiblemente, produciría un mapa por mes que usaría como marco en un video corto que representa los cambios en el espacio de la red del aeropuerto de Atlanta.

El problema No puedo hacer que el bucle produzca más de un PNG, desde el primer mes único en cada CSV, cada vez que lo ejecuto. Estoy bastante seguro de que el código de Aaron Hardin "rompe" la automatización, ya que se usa en el tutorial de Flowing Data. Después de tres días de jugar con él y perseguir cualquier R-how relevante, me doy cuenta de que simplemente me faltan las habilidades para reconciliar uno con el otro. ¿Alguien puede ayudarme a automatizar el proceso?

¡Hay un reconocimiento de disertación para ti!

Respuestas a la pregunta(1)

Su respuesta a la pregunta