R:将时间序列数据与'splinefun'和ggplot2'stat_function'一起使用

问题描述 投票:2回答:1

我有时间序列数据,每个时间都有一个观测值。我通过R的splinefun运行它以创建用于观察的样条函数。我想使用ggplot2stat_function中绘制此样条函数。我希望绘图以日期/时间为X轴,而不是按行索引的X轴。可以说我已经做了很多尝试,从编辑splinefun的结果(以使其与as.POSIXct一起使用)到在ggplot命令中赋予不同的美感。

如何获得X轴上的日期/时间?

这是我当前的情节:

enter image description here

这里是代表:

library(ggplot2)

DateTime <- seq.POSIXt(from = as.POSIXct('2020-01-10'),
                       to = as.POSIXct('2020-01-12'),
                       by = '1 hour')
set.seed(1)
y <- runif(length(DateTime), min = 0.5) * cos(as.numeric(DateTime))

df <- data.frame(DateTime = DateTime, 
                 x = seq(1:length(DateTime)),
                 y = y)

myspline <- splinefun(df$x, df$y)

ggplot(mapping = aes(x=1:nrow(df))) +
    stat_function(fun = myspline, size = 1, args = list(deriv = 0))
r function ggplot2 spline stat
1个回答
1
投票

splinefun函数对于我的POSIXct值似乎可以正常工作

set.seed(1)

df <- transform(data.frame(DateTime = seq.POSIXt(from = as.POSIXct('2020-01-10'),
                                       to = as.POSIXct('2020-01-12'),
                                       by = '1 hour')),
  y=runif(length(DateTime), min = 0.5) * cos(as.numeric(DateTime)))


library(ggplot2)
myspline <- splinefun(df$DateTime, df$y)

ggplot(df, mapping = aes(x=DateTime)) +
  stat_function(fun = myspline, size = 1, args = list(deriv = 0))

enter image description here

使用R版本3.6.2测试

© www.soinside.com 2019 - 2024. All rights reserved.