Несколько вариантов присутствуют, persp()
и wireframe()
, последний в упаковке решетка .
Сначала несколько фиктивных данных:
set.seed(3)
dat <- data.frame(Dates = rep(seq(Sys.Date(), Sys.Date() + 9, by = 1),
each = 24),
Times = rep(0:23, times = 10),
Value = rep(c(0:12,11:1), times = 10) + rnorm(240))
Для
persp()
нужны данные в виде местоположений сетки x
и y
и матрицы z
наблюдений.
new.dates <- with(dat, sort(unique(Dates)))
new.times <- with(dat, sort(unique(Times)))
new.values <- with(dat, matrix(Value, nrow = 10, ncol = 24, byrow = TRUE))
и может быть нанесен с помощью:
persp(new.dates, new.times, new.values, ticktype = "detailed", r = 10,
theta = 35, scale = FALSE)
Фасеты можно раскрасить с помощью аргумента col
. Вы можете сделать намного хуже, чем изучать код для chartSeries3d0()
на странице, на которую вы ссылаетесь. Большая часть кода просто рисует правильные оси, так как ни persp()
, ни wireframe()
не обрабатывают Date
объекты легко.
Что касается wireframe()
, то мы
require(lattice)
wireframe(Value ~ as.numeric(Dates) + Times, data = dat, drape = TRUE)
Вам нужно будет немного поработать или поработать, чтобы отсортировать метки осей, так как wireframe()
на данный момент не работает с объектами класса "Date"
(следовательно, приведен как числовой).