24

R 統計パッケージの世界では、rgl を使用すると、マウスで回転できる 3D プロットを生成できます。これらのプロットを移植可能な形式でエクスポートし、Web ブラウザまたは他のサードパーティ ツールにロードして回転させる方法はありますか? 内部ウィキでプロットを共有できるようになるため、特に Web ブラウザ ソリューションに関心があります。

rgl がこれを許可しない場合、これを達成できる他のライブラリまたは戦略はありますか?

4

6 に答える 6

15

vrmlgenパッケージを試すことができます。ブラウザ プラグインで表示できる 3D VRML ファイルを生成します。VRML Plugin および Browser Detectorでプラグインを見つけることができます。

プラグインをインストールしたら、これを試してください:

require(vrmlgen)
example(bar3d)

注: パスが破損しているため、サンプル コードはブラウザー (RStudio、Win7、Chrome) で自動的に開きませんでした。以下を使用する必要がある場合があります。

require(stringr)
browseURL(str_replace_all(file.path(outdir, 'barplot.html'), fixed('\\'), '/'))

VRML プラグインをインストールしたくない場合は、代わりに X3DOM を使用できます。コンバーターが必要になりますが、ユーザーは (最新の) ブラウザーだけでそれらを表示できるはずです。正しいパスを取得するには、次のコードを変更する必要がある場合があります。

setwd(outdir)
aopt <- 'C:/PROGRA~1/INSTAN~1/bin/aopt' # Path to conversion program
vrml <- 'barplot.wrl'
x3dom <- 'barx.html'
command <- paste(aopt, '-i', vrml, '-N', x3dom)
system(command)
# LOG   Avalon   Init: 47/616, V2.0.0 build: R-21023 Jan 12 2011
# LOG   Avalon   Read url
# LOG   Avalon   Read time: 0.074000
# ============================================
# Call: writeHTML with 1 param 
# Write raw-data to barx.html as text/html
# WARNING   Avalon   Run NodeNameSpace "scene" destructor and _nodeCount == 3
# WARNING   Avalon   Try to remove nodes from parents
# WARNING   Avalon   PopupText without component, cannot unregister
# WARNING   Avalon   Avalon::exitSystem() call and node/obj left: 0/3331
browseURL(file.path(outdir, 'barx.html'))
setwd(curdir)
于 2011-10-14T06:09:11.323 に答える
13

簡単な解決策については、これを試してください...

x <- sort(rnorm(1000))
y <- rnorm(1000)
z <- rnorm(1000) + atan2(x,y)

plot3d(x,y,z, 
       col=rainbow(1000),
       type = "s",
       size=1,
       xlab = "x", 
       ylab = "y", 
       zlab = "z",
       box=T)

# This writes a copy into temporary directory 'webGL', and then displays it
browseURL(paste("file://", writeWebGL(dir=file.path("C:/Your-Directory-Here/", "webGL"), width=700), sep=""))

FirefoxまたはHTML5とWebGLをサポートする同様のブラウザでindex.htmlファイルを開きます

于 2012-08-08T13:55:10.583 に答える
2

ピートの提案は賞金に値する. wrl-detour は実際には必要ありません。sprintf とその仲間を使用して xml ファイルを生成するのはかなり簡単です。

問題は速度です。比較として、17000 個の球体 (ボクセルの場合) を含むカラーコード胃 MRI があり、rgl を使用した画面で非常に反応が良かったです。

x3dom に移植したら、システムがフリーズしました。450 個の球体を含む縮小セットは次のように機能します。

http://www.menne-biomed.de/uni/x3dsample.html

ブラウザのサポートには一貫性がありません。x3dom サンプル ページのサンプルの一部は、(信じられないかもしれませんが) Internet Explorer + Flash 11 で最適に動作します。動的ライトの例を確認してください。

私の例は機能しますが、Firefox 7.0.1 ではフラットに見えます。最高は常に Chrome です。

後で追加: 別の例を次に示します。

Zipとしての胃3D

それに含まれる x3d ファイルは、Instant Reality Viewer を使用してオンボード グラフィックスでも表示できます。そこから生成された html ファイルが読み込まれることがありますが、回転できません。

于 2011-10-16T15:08:30.763 に答える
1

究極の柔軟性を得るために、私はProcessingを使用して幸運に恵まれました。もともとは Java で書かれていましたが、現在はjavascriptに安定して移植されており、さらに実験的に python やその他のいくつかにも移植されています。

http://processingjs.org
http://processing.org

HTML5 要素を使用して、<canvas>オンザフライで処理コードを処理します。別のファイルの視覚化コードにリンクするか、html ファイルに直接書き込むことができます (Sweave を思い出します!)。

また、オープンソースの例の膨大なリソースがオンラインにあります。例えば:

http://openprocessing.org

最後に、基本的なセットアップを示すためにまとめた要点を次に示します。processing.jsファイルを gist と同じフォルダーにダウンロードし、ブラウザーを開きます。

https://gist.github.com/1295842

次のようになります。

ここに画像の説明を入力

于 2011-10-18T16:26:57.927 に答える
0

200 万年前 (OK、2005 年) に R コードを書き、Mathematica (!!) グラフィックス フォーマットでグラフィックス プリミティブをダンプしました。6年間使っていませんでしたが、興味があれば復活させてみます。

PSここにの結果がありますhelp(package="LG3d")

get.live.jar            Download live.jar Java archive
LG.display              Display Live3D graphics in a browser
LG.html.head            header and footer files for LiveGraphics HTML
                        files
LGmobius                Draw a 3D mobius strip
LG.open                 open and close LiveGraphics3D files
LG.plot.profiles        Plot likelihood surface + profiles using
                        Live3D
LGtorus                 Draw a torus in LG graphics system
LGtoruswrap             Utility functions for LGtorus
mma.brace               Low-level graphics primitives for
                        LiveGraphics3D
mma.edge                change edge style
mma.persp               Output a perspective plot to a LiveGraphics3D
                        file
mma.point               Medium-level graphics primitives for
                        LiveGraphics3D
mma.polygon             draw a Mma/LG3d polygon
于 2011-10-05T21:20:25.933 に答える