Tôi đã lấy một số điều tôi đã học trong một dữ liệu Flowing great circle mapping tutorial và kết hợp chúng với mã được liên kết trong các nhận xét để ngăn những điều kỳ lạ xảy ra khi R vẽ các vòng tròn lớn xích đạo. Điều đó mang lại cho tôi điều này:Tự động hóa việc tạo bản đồ vòng tròn lớn trong R
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()
}
tôi muốn tự động hóa sản xuất bản đồ cho một tập dữ liệu lớn chứa tất cả các tuyến thương mại dự kiến - dummy sample - chia sẻ giữa ATL và các sân bay khác trong mạng lưới toàn cầu (airports.csv được liên kết trong bài đăng Dữ liệu luồng). Tốt hơn là, tôi sẽ tạo một bản đồ mỗi tháng mà tôi sẽ sử dụng làm khung trong video ngắn mô tả các thay đổi trong không gian mạng sân bay Atlanta.
Vấn đề: Tôi không thể tạo vòng lặp để tạo ra nhiều hơn một PNG — chỉ từ tháng duy nhất đầu tiên trong mỗi CSV — mỗi khi tôi chạy nó. Tôi khá chắc chắn mã của Aaron Hardin 'phá vỡ' tự động hóa như nó được sử dụng trong hướng dẫn dữ liệu chảy. Sau ba ngày lộn xộn với nó và đuổi theo bất kỳ R có liên quan như thế nào, tôi nhận ra tôi chỉ đơn giản là thiếu các sườn để hòa giải với người kia. Ai có thể giúp tôi tự động hóa quá trình?
Có ghi nhận luận án trong đó dành cho bạn!
Bạn thấy rất nhiều mã. Cố gắng tạo một ví dụ * tối thiểu mà vẫn không hoạt động. Ví dụ, tạo một vòng lặp đơn giản vẽ một loạt các biểu đồ rất đơn giản. Thậm chí đơn giản hơn, hãy để mỗi vòng lặp đơn giản in giá trị của 'i' và' monthyear [i] '. Tôi đặt cược trong quá trình bạn sẽ tìm thấy lỗi. Nếu không, hãy đăng ví dụ * tối thiểu * và ai đó sẽ có thể giúp bạn. – Andrie
Bạn có thể sử dụng định dạng đầu ra 'pdf() 'và sử dụng tháng năm làm nhãn chính, theo cách này bạn không phải mở và đóng kết nối đầu ra tệp mỗi lần trong vòng lặp của bạn. – mzuba
@mzuba Có, nhưng sau đó bạn chỉ nhận được một tệp pdf duy nhất, chứ không phải là tệp cho từng ô. – Andrie