R:使用 'splinefun' 和 ggplot2 'stat_function' 的时间序列数据
R: Using time series data with 'splinefun' and ggplot2 'stat_function'
我有时间序列数据,每个时间都有一个观察值。我 运行 它通过 R 的 splinefun
为观察创建一个样条函数。我想使用 stat_function
在 ggplot2
中绘制此样条函数。我希望我的情节将 date/time 作为 X 轴,而不是按行索引的 X 轴。我只想说我已经尝试了很多东西,从编辑 splinefun
的结果(试图让它与 as.POSIXct 一起工作),到在 ggplot 命令中使用不同的美学。
如何获得 X 轴上的 dates/times?
这是我目前的剧情:
这是一个代表:
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))
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))
使用 R 版本 3.6.2 测试
我有时间序列数据,每个时间都有一个观察值。我 运行 它通过 R 的 splinefun
为观察创建一个样条函数。我想使用 stat_function
在 ggplot2
中绘制此样条函数。我希望我的情节将 date/time 作为 X 轴,而不是按行索引的 X 轴。我只想说我已经尝试了很多东西,从编辑 splinefun
的结果(试图让它与 as.POSIXct 一起工作),到在 ggplot 命令中使用不同的美学。
如何获得 X 轴上的 dates/times?
这是我目前的剧情:
这是一个代表:
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))
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))
使用 R 版本 3.6.2 测试