2017-03-23 6 views
2

표시된 매개 변수가 위도 또는 수심과 같은 지리적 측정 값의 함수이기도 한 불규칙한 격자 형 시계열 데이터를 시각화하고 싶습니다. 날짜 (날짜), 지리적 매개 변수 수심 (출발)이자 염분 (SAL)와 ggplot2로 제작 예비 산점도의 매개 변수를 포함하는 예제 데이터 파일은 우리의보간 및 공간/2D 시계열 데이터의 플로팅</p> <p>(이것은 내 첫 번째 게시물 그래서 (내가) 내가 너무 많은 규칙을 깰 및 (ii) 외부 예를 들어 플롯을 저장해야하지 희망입니다)

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() 

은 공간과 시간에 불규칙적으로 이격되어 ggplot의,321와 플로팅 0 함수는 보간이 필요합니다.

자유롭게 사용할 소프트웨어 바다 데이터보기 (ODV)은 이러한 보간이 가능하고 이러한 문제는 이전에 해결 비슷 같이 I는 R.

우리 owncloud (위 링크)에 저장된 ODV 줄거리를 재생하고자 문제, 나는 더 정밀한 그리드의 파라미터 sal을 보간하고, 패키지 akima로 dep를 시도했다. 그러나 POSIXct 객체 인 x 매개 변수에서는 작동하지 않습니다.

누구에게도 해결책이 있습니까?

+0

데이터를 검사하지 않았습니다. 그냥 생각. 'as.numeric'을 사용하여 POSIXct 객체를 숫자로 변환하면 보간에 도움이됩니까? – www

+0

@ycw에 대한 귀하의 의견을 보내 주셔서 감사합니다. 사실 POSIXct 날짜를 숫자로 변환하려고했습니다. akima 패키지는 4 배의 x와 y 변수가 필요하기 때문에 숫자를 1e8로 나눠야했습니다 (이유를 정확하게 이해하지 못함). 그러나이 방법은 내 데이터 세트로 의미있는 보간 결과를 산출하지 못했습니다. –

답변

2

나는 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 

Contour plot

. 방금 기본값을 사용했습니다.

+0

@ oropendola : 대단히 감사합니다. 당신의 솔루션이 내가 찾고있는 솔루션입니다. 놀랍게도 코드를 실행할 때 깊이가 225m 이상인 작은 변칙은 존재하지 않습니다. 'mba.surf' 함수에서'n'과'm' 인수를 조정하면 데이터의 해상도가 공간과 시간이 다를 때 보간의 품질을 향상시키는 데 도움이됩니다. –

+0

@ JensDanielMüller이 방법이 효과가 있다면 대답 자체를 왼쪽 상단 근처의 체크 표시를 클릭하여 받아 들여야합니다. – AF7

+0

나는 mba 패키지를 처음 접했고 날짜 축을 따라 보간을 얻기 위해 추가해야 할 것이 무엇인지 궁금하십니까? mba-mba.surf (df [, c ('date', 'dep', 'Sal')], 100, 100) dimnames (mba $ xyz.est $ z) 코드에 어떻게 추가 될까요? (mba $ xyz.est $ x, mba $ xyz.est $ y) df3 <- melt (mba $ xyz.est $ z, varnames = c ('날짜', '깊이'), value.name = '염분')'? 고마워요 - 빌 –