R 不规则网格上二维/空间时间序列数据的插值和绘图

R 不规则网格上二维/空间时间序列数据的插值和绘图,r,ggplot2,time-series,interpolation,R,Ggplot2,Time Series,Interpolation,(这是我的第一篇帖子,所以(i)我希望不要违反太多规则,(ii)必须在外部存储示例图) 我希望可视化不规则网格化的时间序列数据,其中显示的参数也是地理测量值(如纬度或水深)的函数。包含日期(date)、地理参数水深(dep)和相关盐度参数(sal)的示例数据文件以及使用ggplot2生成的初步散点图存储在我们的 密码:timeseries ggplot的R代码为: # Load required packages library(ggplot2) library(data.table) lib

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

我希望可视化不规则网格化的时间序列数据,其中显示的参数也是地理测量值(如纬度或水深)的函数。包含日期(date)、地理参数水深(dep)和相关盐度参数(sal)的示例数据文件以及使用
ggplot2
生成的初步散点图存储在我们的

密码:timeseries

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()
#加载所需的包
图书馆(GG2)
库(数据表)
库(颜色渐变)
图书馆(比例尺)
#导入空间时间序列数据

df我在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
#加载所需的包
图书馆(GG2)
图书馆(lubridate)
图书馆(E2)
库(颜色渐变)
图书馆(比例尺)
图书馆(MBA)
#导入空间时间序列数据

df我没有检查数据。只是一个想法。如果您使用
as.numeric
将POSIXct对象转换为数字,这是否有助于插值?谢谢@ycw的评论。事实上,我尝试将POSIXct日期转换为数字。我不得不将数值除以1e8,因为akima软件包要求x和y变量在4个数量级以内(我不太明白为什么)。然而,这种方法并没有对我的数据集产生有意义的插值结果。@oropendola:非常感谢,您的解决方案正是我想要的!令我惊讶的是,当我运行代码时,在深度>225m的绘图中出现的小异常并不存在。在
mba.surf
函数中调整参数
n
m
,有助于提高插值的质量,当数据的分辨率在空间和时间上不同时。@JensDanielMüller如果这对你有效,不要忘记点击答案左上角附近的勾号来接受答案。我是mba课程的新手,不知道你还需要添加什么来获得沿日期轴的插值?我不知道你说的“沿着日期轴”是什么意思。它的工作与akima软件包相同:用100 x 100的网格(日期x深度)插值盐度。这不是一个连接的一维插值。。。