我将这些元素的时间序列分组在长度为t
的列表中。
series <- seq(1:10)
lst <- list()
set.seed(28100)
for (t in series) {
lst[[t]] <- sample(c(1:20, NA), sample(1:20, 1))
}
列表元素的长度可以变化;在列表中创建二维data.frame显然不可行:
lst
# [[1]]
# [1] 6 7 12 4 15 20 3
#
# [[2]]
# [1] 14 18 8 20 NA 6 19 4 9 5 1 13 3 10 12 15
# [17] 11 17
#
# ...
#
# [[9]]
# [1] 3 9 12 8 16 15 10 19 14 11 6 2 20 13 5 18
#
# [[10]]
# [1] 4 20 10 2 12 5 19 1 NA 11 14 7 17
我仍然希望使用geom_boxplot()
创建包含我的发行版异常值的时间序列箱图(例如this)。
答案 0 :(得分:1)
如果您试图在x轴上绘制系列并在y轴上绘制采样值(我将它们称为 y ),那么创建数据框列表并堆叠它们以获得数据结构ggplot
的需要。例如:
library(ggplot2)
# Modify lst into data frames of varying dimension
lst <- lapply(series, function(x) {
data.frame(series = factor(x, levels = series),
y = lst[[x]])
})
# Stack the data frames
lst <- do.call(rbind, lst)
# Make the plot
ggplot(lst, aes(x = series, y = y)) +
geom_boxplot()