Ошибка, которая persp3d()
дает, когда x
является переменным фактором или символ означает, что он будет принимать только числовые в x
(и, вероятно, в y
и z
тоже) так x, y
должны быть числовыми:
x <- 1:6
Соответствуя месяц имена:
month <- c("Jan","Feb","Mar","Apr","May","Jun")
Я отрекаюсь от своего предыдущего заявления здесь, теперь, когда я понимаю, как Z-значения plot3d
карты в положениях, определенных x
и y
так y
может оставаться как есть, но должно быть числовым:
y = c(2010,2011,2012)
Кроме того, nrow(z)
должны быть такими же, как nrow(x)
, опять-таки это ясно из ошибки, брошенной когда один пытается сделать наоборот. Итак:
z = matrix(seq(1:18),nrow=6)
земля ваша поверхность без осей по умолчанию: (здесь, подход очень похож на то, как мы делаем на заказ осей с обычными 2D-графики в R)
library(rgl) persp3d(x, y, z, axes=F, ylab="", zlab="") box3d()
Наконец добавить ваши оси:
axis3d(edge='x++', at=x, labels=month, tick=T) axis3d(edge='y--', at=y, labels=y, tick=T, pos=c(0,0,0), line=-1) axis3d(edge='z+-', at=as.integer(range(z)), labels=as.integer(range(z)), tick=T)
Это не совсем то, что я ожидал. 1). «X» отображается как «1,2,3,4,5,6», вместо «Jan», «Feb», «Mar», «Apr», «May», «Jun». 2). Это график рассеяния, а не участок поверхности. Спасибо. – 2607
Правильно, мои первоначальные предположения о том, как работают «plot3d», неверны. См. Обновленный ответ. – shekeine