SORU
13 Aralık 2009, Pazar


Kontur harita yerleşimi ile 3D yüzey çizim çizme, R kullanarak

R. kullanarak çizmek istiyorum 3-demet veri kümesi (X,Y,Z noktaları) var

İstiyorum oluşturmak için bir yüzey çizim verileri, ve üst üste bir kontur harita üzerinde yüzey arsa, böylece oluşturmak izlenim kontur haritası olan "gölge" ya da projeksiyon yüzeyi arsa. Kontur harita yüzey arsa altında görünür.

Benim veri kümesi biraz bu gibi görünüyor:

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

Bunu nasıl başarabilir?

CEVAP
13 Aralık 2009, Pazar


Düzenleme:

Ben sadece senin boyutları bir tarih olduğunu belirttiği gördü. 3 boyutlu zaman serisi grafiği için tasarlanmış olan, have a look at Jeff Ryan's chartSeries3d. Burada zamanla verim eğrisini gösteriyor:

chartSeries example

Orijinal Cevabı:

Anladığım kadarıyla, countour bir harita 3D yüzey çizim altında uçağa projeksiyon olmak istiyorum. İki araziler oluşturmak ve sonra bunları birleştirerek daha başka kolay bir yolu olduğunu sanmıyorum. 10* *olabilir.

3D çizim için iki temel R paketleri vardır:rgl(veya misc3d ilgili paket kullanabilirsiniz)scatterplot3d.

rgl

Rgl paketi OpenGL etkileşimli 3D araziler (read more on the rgl website) oluşturmak için kullanır. İşte size bir örnek surface3d fonksiyonu

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")

Alfa parametresi bu yüzey kısmen saydam hale getirir. Şimdi bir yüzeyi etkileşimli 3D bir arsa var ve countour bir harita altında oluşturmak istiyorum. rgl varolan bir görüntü için daha fazla hikaye eklemek için izin verir:

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")

Bu yüzey diğer yüzey altında bir uçak var, böylece yükseklik=1 kurdum. Bu bu şekilde biter, ve bir fare ile döndürülebilir:

3D surface plot

scatterplot3d

scatterplot3d R diğer komplo fonksiyonları (read the vignette) gibi biraz daha fazla. Burada basit bir örnek:

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)

Bu durumda, görüntü kaplaması gerekir. R-Wiki has a nice post on creating a tanslucent background image.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DanceOn

    DanceOn

    6 Mayıs 2006
  • fufko

    fufko

    27 ŞUBAT 2006
  • jonathepianist

    jonathepiani

    31 Temmuz 2008