太平洋ひとりぼっち

これの第2章に、アカウミガメの移動軌跡の例が載っている。

発信機をつけて人工衛星で追跡したら、メキシコから日本まで、太平洋横断の旅が観察された。その経過をプロットするというもの。

 データファイルとRスクリプトは上記サイトからダウンロードできる(Data sets and script の “2”)。

###################################################
### code chunk number 52: cm.Rnw:1002-1004
###################################################
turtle_df <- read.csv("seamap105_mod.csv")
summary(turtle_df)


###################################################
### code chunk number 54: cm.Rnw:1021-1027
###################################################
timestamp <- as.POSIXlt(strptime(as.character(turtle_df$obs_date), "%m/%d/%Y %H:%M:%S"), "GMT")
turtle_df1 <- data.frame(turtle_df, timestamp=timestamp)
turtle_df1$lon <- ifelse(turtle_df1$lon < 0, turtle_df1$lon+360, turtle_df1$lon)
turtle_sp <- turtle_df1[order(turtle_df1$timestamp),]
coordinates(turtle_sp) <- c("lon", "lat")
proj4string(turtle_sp) <- CRS("+proj=longlat +ellps=WGS84")


###################################################
### code chunk number 55: cm.Rnw:1031-1034
###################################################
library(maptools)
gshhs.c.b <- system.file("share/gshhs_c.b", package="maptools")
pac <- Rgshhs(gshhs.c.b, level=1, xlim=c(130,250), ylim=c(15,60), verbose=FALSE)


###################################################
### code chunk number 56: cm.Rnw:1039-1051
###################################################
plot(pac$SP, axes=TRUE, col="khaki2", xaxs="i", yaxs="i")
plot(turtle_sp, add=TRUE)
m_rle <- rle(months(turtle_sp$timestamp))
clen <- cumsum(m_rle$lengths[-length(m_rle$lengths)])-1
crds <- coordinates(turtle_sp)
text(crds[clen,], labels=m_rle$values[-1], pos=3, offset=1.5, srt=45)

f:id:fusion0202:20190613023423p:plain

 

同じような図を、ggplot2 で描いてみた。

library(ggplot2)
library(ggthemes)


turtle_df <- read.csv("seamap105_mod.csv")
timestamp <- as.POSIXlt(strptime(as.character(turtle_df$obs_date),
                                             "%m/%d/%Y %H:%M:%S"), "GMT")
turtle_df1 <- data.frame(turtle_df, timestamp = timestamp)
turtle_df1$lon <- ifelse(turtle_df1$lon < 0, turtle_df1$lon + 360, turtle_df1$lon)
turtle_sp <- turtle_df1[order(turtle_df1$timestamp),]
m_rle <- rle(months(turtle_sp$timestamp))
clen <- cumsum(m_rle$lengths[-length(m_rle$lengths)]) - 1
turtle_sp_pts <- turtle_sp[clen,]
turtle_sp_pts <- cbind(turtle_sp_pts, label = m_rle$values[-1])

 

world <- map_data('world2')

p <- ggplot() + geom_map(data = world, map = world,
                                  aes(x = long, y = lat, group = group, map_id =r egion), 

                                  fill = "#ffffbb", colour = "#7f7f7f", size = 0.5)
p <- p + xlim(115, 270) + ylim(0, 60)
p <- p + geom_line(data = turtle_sp, aes(x = lon, y = lat),
                                 colour = "darkblue", alpha=0.4)
p <- p + geom_point(data = turtle_sp_pts, aes(x = lon, y = lat),
                                  colour = "darkblue", size = 3)
p <- p + geom_text(data = turtle_sp_pts,

                                 aes(x = lon + 1, y = lat + 1, label = label), angle = 45,

                                 colour = "darkred", hjust = -0.1, nudge_x = -0.1)
p <- p + coord_equal() + theme_map()
print(p)

f:id:fusion0202:20190613024809p:plain



 

なお、このアカウミガメのデータは、だいぶ以前に Nature で紹介された研究からのものと思われる。