Plusieurs options se présentent, persp()
et wireframe()
, ce dernier dans le paquet treillis.
d'abord certaines données fictives:
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()
a besoin des données comme les x
et y
emplacements de grille et une matrice z
d'observations.
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))
et peuvent être placés en utilisant:
persp(new.dates, new.times, new.values, ticktype = "detailed", r = 10,
theta = 35, scale = FALSE)
Les facettes peuvent être colorés en utilisant l'argument col
. Vous pourriez faire beaucoup pire que d'étudier le code pour chartSeries3d0()
à la page que vous avez référencé. La plupart du code dessine juste les axes appropriés car ni persp()
ni wireframe()
manipulent facilement les objets Date
.
Quant à wireframe()
, nous
require(lattice)
wireframe(Value ~ as.numeric(Dates) + Times, data = dat, drape = TRUE)
Vous aurez besoin de faire un peu ou de travail pour trier l'étiquetage de l'axe comme wireframe()
ne fonctionne pas avec des objets de la classe "Date"
au moment (d'où le casting comme numérique).
Je suggérerais d'essayer de comprendre comment cette figure a été faite, puis de poser des questions plus précises en fonction de l'endroit où vous êtes coincé. – Stedy
Vérifiez le paquet 'lattice', en particulier voir les exemples de' wireframe' (vous pouvez le faire en chargeant le paquet 'lattice' puis en exécutant' example (wireframe) '). – nullglob
Si vous postez quelques exemples de données, il sera beaucoup plus facile de vous aider. Voir http://stackoverflow.com/q/5963269/602276 pour des conseils sur poser une bonne question – Andrie