Построение трехмерного участка поверхности с наложением контурной карты, используя R



У меня есть 3-кортежный набор данных (X,Y, Z точек), которые я хочу построить с помощью R.



Я хочу создать участок поверхности из данных и наложить контурную карту на участок поверхности, чтобы создать впечатление контурной карты, являющейся "тенью" или проекцией с участка поверхности. Контурная карта должна появиться под поверхностным участком.



мой набор данных выглядит так:



Axis  |  Data Type
-------------------
X | Date value
Y | Float value
Z | Float value


Как я могу этого достичь?

620   1  

1 ответ:

Edit:

Я только что видел, что вы указали, что одно из ваших измерений-это дата. В таком случае, взгляните на chartSeries3d Джеффа Райана, который предназначен для Таблица 3-мерных временных рядов. Здесь он показывает кривую доходности с течением времени:

пример карт http://www.quantmod.com/examples/chartSeries3d/chartSeries3d-thumb.png

Оригинальный Ответ:

как я понимаю, вы хотите, чтобы карта countour была проекцией на плоскость под 3D-поверхностью. Я не верю, что есть простой способ сделать это, кроме как создать два сюжета, а затем объединить их. Вы можете найти пространственный вид полезно для этого.

есть два основных пакета R для 3D-печати:rgl (или вы можете использовать соответствующие misc3d пакета) и scatterplot3d.

rgl

пакет rgl использует OpenGL для создания интерактивных 3D-графиков (подробнее на сайте ргл). Вот пример использования :

library(rgl)
data(volcano)
z <- 2 * volcano # Exaggerate the relief
x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N)
y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W)
zlim <- range(z)
zlen <- zlim[2] - zlim[1] + 1
colorlut <- terrain.colors(zlen,alpha=0) # height color lookup table
col <- colorlut[ z-zlim[1]+1 ] # assign colors to heights for each point
open3d()
rgl.surface(x, y, z, color=col, alpha=0.75, back="lines")

параметр "Альфа" делает эту поверхность частично прозрачным. Теперь у вас есть интерактивный 3D-График поверхности, и вы хотите создать карту countour внизу. rgl позволяет добавить больше участков к существующему изображение:

colorlut <- heat.colors(zlen,alpha=1) # use different colors for the contour map
col <- colorlut[ z-zlim[1]+1 ] 
rgl.surface(x, y, matrix(1, nrow(z), ncol(z)),color=col, back="fill")

в этой поверхности я установил высоты=1 так, чтобы у нас была плоскость под другой поверхностью. Это в конечном итоге выглядит так, и может быть повернут с помощью мыши:

3D участок поверхности http://i45.tinypic.com/12637gy.jpg

scatterplot3d

scatterplot3d немного больше похож на другие функции построения в R (читать виньетка). Вот такой простой пример:

temp <- seq(-pi, 0, length = 50)
x <- c(rep(1, 50) %*% t(cos(temp)))
y <- c(cos(temp) %*% t(sin(temp)))
z <- c(sin(temp) %*% t(sin(temp)))
scatterplot3d(x, y, z, highlight.3d=TRUE,
 col.axis="blue", col.grid="lightblue",
 main="scatterplot3d - 2", pch=20)

в этом случае вам нужно будет наложить изображения. R-Wiki имеет хороший пост о создании серебристого фонового изображения.

Comments

    Ничего не найдено.