Я пытаюсь создать очень простой трехмерный график, используя пакет rgl
: у меня есть функция, которая просто отображает значения x
в значения y
.Для данного z
(в моем примере: z = 1
) я могу построить эту функцию на трехмерном графике:
library(rgl)
mycurve <- function(x) { return (1/x)}
myx <- seq(1, 10, by = 0.1)
plot3d(x = NA, xlim = c(0, 10), ylim = c(0, 10), zlim = c(0, 5),
xlab = "x", ylab = "y", zlab = "height")
lines3d(x = myx, y = mycurve(myx), z = 1)
Тем не менее, даже после нескольких часов попыток понять документацию ?persp3d
и ?surface3d
, я все еще не знаю, как добавить поверхность к моему графику, которая «соединяет» мою линию с плоскостью xy - вот так:
(Чтобы создать это изображение, я обманул, построив много линий: for (i in seq(0, 1, by = 0.01)) { lines3d(x = myx, y = mycurve(myx), z = i) }
.)
Я полагаю, что мне нужно предоставитьисправить значения до surface3d
как-то.С ?surface3d
:
Поверхность определяется матрицей значений высоты в z, со строками, соответствующими значениям в x, и столбцами, соответствующими значениям в y.
Учитывая, что моя пространственная кривая "вертикальная", каждое значение x
соответствует только 1 значению y
.Тем не менее, мне нужно указать два z
значения для каждой пары xy
, поэтому я не знаю, как действовать дальше.
Как построить кривую пространства, как показано на втором изображении?