利用R在不规则网格上插值和绘制2d /空间时间序列数据

Jen*_*ler 3 interpolation r time-series ggplot2

(这是我的第一篇文章,所以(i)我希望不要破坏太多规则,(ii)必须在外部存储示例图

我想要显示不规则网格时间序列数据,其中显示的参数也是纬度或水深等地理测量的函数.包含日期(日期),地理参数水深(dep)和感兴趣盐度(sal)参数的示例数据文件以及生成的初步散点图ggplot2存储在我们的

owncloud

密码:时间序列

ggplot图的R代码是:

# Load required packages
library(ggplot2)
library(data.table)
library(colorRamps)
library(scales)

# Import spatial timeseries data
df      <- data.table(read.csv("timeseries_example.csv"))
df$date <- as.POSIXct(strptime(df$date, format="%m/%d/%Y", tz="GMT"))

# Scatterplot with color representing the z parameter

Fig <-
ggplot(data=df, aes(date, dep, col=Sal))+
  geom_point()+
  scale_y_reverse()+
  scale_colour_gradientn(colours = matlab.like2(7), oob=squish)

tiff("./example_timeseries_R_ggplot.tiff", width = 200, height = 100, 
  units =  'mm', res = 300, compression = 'lzw')
Fig
dev.off()
Run Code Online (Sandbox Code Playgroud)

由于数据在空间和时间上间隔不规则,因此使用ggplot geom_tile()函数绘图需要插值.

免费提供的软件海洋数据视图(ODV)实现了这种插值,我想重现与R一起存储在我们自己的云(上面的链接)中的ODV图.

由于此问题类似于先前解决的问题,我尝试在更精细的日期网格上插入参数sal并使用包进行插入akima.但是,这不适用于作为POSIXct对象的x参数.

有人有解决方案吗?

oro*_*ola 6

我对MBA套餐好运:

# Load required packages
library(ggplot2)
library(lubridate)
library(reshape2)
library(colorRamps)
library(scales)
library(MBA)

# Import spatial timeseries data
df      <- read.csv("timeseries_example.csv")
df$date <- as.POSIXct(strptime(df$date, format="%m/%d/%Y", tz="GMT"))
df$date <- decimal_date(df$date)

mba <- mba.surf(df[,c('date', 'dep', 'Sal')], 100, 100)
dimnames(mba$xyz.est$z) <- list(mba$xyz.est$x, mba$xyz.est$y)
df3 <- melt(mba$xyz.est$z, varnames = c('date', 'depth'), value.name = 'salinity')

Fig <-
  ggplot(data=df3, aes(date, depth))+
  geom_raster(aes(fill = salinity), interpolate = F, hjust = 0.5, vjust = 0.5) +
  geom_contour(aes(z = salinity)) + 
  geom_point(data = df, aes(date, dep), colour = 'white') +
  scale_y_reverse() +
  scale_fill_gradientn(colours = matlab.like2(7))
Fig
Run Code Online (Sandbox Code Playgroud)

轮廓图

使用插值设置可以清除一些异常情况.我刚刚使用了默认值.