2009-12-13 14 views
58

を用いて、等高線マップオーバレイ付き3D表面プロットをプロットデータから抽出し、輪郭マップを表面プロットに重ね合わせることにより、輪郭マップの印象を表面プロットからの「影」または投影とすることができる。等高線マップはサーフェスプロットの下に表示されます。Iが表面プロットを作成したいI 3タプルデータセットIはR.</p> <p>を用いてプロットする(X、Y、Z点)を有するR

私のデータセットは、多少のようになります。

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

どのように私はこれを達成することができますか?

答えて

83

編集:私はちょうどあなたがあなたの次元の一つが最新であることを指摘しました

。その場合、3次元時系列をチャート化するように設計されたhave a look at Jeff Ryan's chartSeries3d。ここで彼は時間をかけてイールドカーブを示しています

chartSeries example http://www.quantmod.com/examples/chartSeries3d/chartSeries3d-thumb.png

オリジナル回答:私はそれを理解し、あなたがcountourマップが3D表面プロットの下に平面上の投影になりたい

。私は、2つのプロットを作成して組み合わせる以外に、これを行う簡単な方法があるとは思わない。あなたはfind the spatial view helpful for thisかもしれません。

プロット3D用の2つの主要なRパッケージがあります。rgl(またはあなたが関連misc3dパッケージを使用することができます)とscatterplot3dが。

RGL

RGLパッケージは、インタラクティブな3Dプロット(read more on the rgl website)を作成するために、OpenGLを使用しています。ここでsurface3d機能を使用して例を示します。

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プロットがあり、下にカウンターマップを作成したいとします。 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 surface plot http://i45.tinypic.com/12637gy.jpg

scatterplot3d

scatterplot3dはRにおける他のプロット関数(read the vignette)のようなもう少しあります。ここに簡単な例があります:

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 has a nice post on creating a tanslucent background image

+0

ありがとうシェーン。私はこれが非常に良い出発点だと思う。ちなみに、軸の1つが時系列(つまり日付)であることに気付いたことがあります。プロットしようとする前に何らかの操作をする必要がありますか、またはR(または本当にrglパッケージ)が日付を正しく扱いますか? –

+0

こんにちはシェーン、大変ありがとうございました。あなたは私に十分な弾薬を与えて、褒められました。より具体的な問題に遭遇した場合は、私はより具体的な質問でここに戻ります。私はあなたの答えを受け入れたものとしてマークします。 –

+0

ポイントデータでも機能するのだろうかと思いますか?私は緯度/経度データを持っており、各点は特定の値を持っています。このデータを「高さマップ」としても使用できますか? – Stophface

関連する問題