2013-07-21 8 views
7

Rのrglパッケージを使用して対話型3Dプロットに固定タイトルを追加しようとしていますが、これまでできませんでした。メインタイトルの下に1つのメインタイトルとサブタイトルを持っていたいと思います。私は3D映画として私のプロットをエクスポートするときに、メインタイトルになるように、ここでrglパッケージを使用して対話型3Dプロットに固定タイトルを入れようR

は、サンプルコードで、

library(rgl) 

data<-read.table(text="   X   Y   Z 
       1 147.0883 -18.69122 -13.90000 
       2 147.0894 -18.69455 -10.97250 
       3 147.0883 -18.69122 -17.45000 
       4 147.0883 -18.69122 -15.44000 
       5 147.0883 -18.69122 -13.45000 
       6 147.0909 -18.69922 -12.25000 
       7 147.0883 -18.69122 -17.30000 
       8 147.0883 -18.69122 -16.40000 
       9 147.0883 -18.69122 -14.30000 
       10 147.0883 -18.69122 -18.50000 
       11 147.0883 -18.69122 -15.67606 
       12 147.0883 -18.69122 -17.25780 
       13 147.0883 -18.69122 -3.64000 
       14 147.1164 -18.68133 -22.13000 
       15 147.0883 -18.69122 -18.54778 
       16 147.0883 -18.69122 -15.50000 
       17 147.1185 -18.68691 -14.55500 
       18 147.0883 -18.69122 -18.12500 
       19 147.0901 -18.69670 -14.39767",header=T) 

data 

a<-as.matrix(data) 

# call the plug-in bandwidth estimator 
H.pi<-Hpi(a,binned=TRUE)*3 ## a is a matrix of x,y,z points 

# calculate the kernel densities 
fhat<-kde(a,H=H.pi) 

# produce a 3D plot 
open3d() 

title<-"Individual 1 (male)" # main title 
title2<-"Site A" # subtitle 

plot(fhat,cont=c(50,95),colors=c("green","red"),drawpoints=TRUE, 
    xlab="",ylab="", zlab="",size=1.5,ptcol="black", 
    axes=F,box=T,aspect=c(1,1,0.5),zlim=c(-40,0)) 

axes3d(c("x--","y--","z-+"),cex=0.8) 
mtext3d("Longitude",edge="x--",line=3,las=2,cex=1.1) 
mtext3d("Latitude",edge="y--",line=3,las=2,cex=1.1) 
mtext3d("Depth (m)",edge="z-+",line=3,las=2,cex=1.1) 

title3d(main=title,sub=title2,line=4) 

は、私は固定のタイトル(およびサブタイトル)を有するの良い方法を発見していません...プロットで回転していない

movie3d(spin3d(axis=c(0,0,1), rpm=4),dir="~/Dropbox/R/Sample plots", duration=15, fps=10, movie="Plot 1") 

あなたは素晴らしいものだ固定位置にメインタイトルを入れて(そしておそらく下の二次タイトルを追加すること)の良い/簡単な方法を持っている場合。事前に感謝、

+0

私はあなたが望むものは 'rgl'ではできないと思います。他のソフトウェアを使用してムービーを作成した後で、タイトルを追加することを検討することもできます。 –

答えて

2

これは現在rglで行うことはできません。映画の後に追加:

+0

プロットが動いている間、バックグラウンドで固定の場所に少なくともメインタイトルを持たせる方法はありますか? – user1626688

+2

いいえ - ?rgl.textsは、テキストが3D空間に配置されていることをユーザーに向けて示します。 rglグラフィックスデバイスは標準のRプロットシステムを使用しないので、 'text'は動作しません。' title'は動作しません。私はftglを使って2d静的テキストを実装するにはC++レベルでいくつかの作業が必要ですrglがそのテキストに使用するライブラリ。 – Spacedman

+5

[こちら](http://stackoverflow.com/a/33425187/3001626)を参照してください。 –

1

は、あなたが使用することを検討してスクリプトのKDEは がやったどのような場合には...(ライブラリが含まれていない)が欠落している再現するに

text3d(x=0.08, y=0.97, z=0.03, title.main ,col="Blue") 

:X、Y、Zは場所がありますあなたのグラフィックで。私はこれをscatter3dと一緒に使用しています(rglも使用しています)。

0

テストに関する提案と同様に、静止している凡例を追加してタイトルとして使用できます。 RGLプロットにタイトルを置くAdding a legend to an rgl 3d plot

legend3d("topright", legend = paste('Type', c('A', 'B', 'C')), pch = 16, col = rainbow(3), cex=1, inset=c(0.02)) 
12

から下の例を参照してください、今昨年から交際を更新おかげ可能です。

新しい機能bgplot3dを使用して、通常のプロットであるかのように、RGLウィンドウの背景に出力します。例えば

# A minimal plot3d example 
library(rgl) 
a = matrix(runif(3000), ncol=3) 
plot3d(a, col = rainbow(100)[cut(a[,1], breaks = seq(0,1,le=101), include.lowest = T)]) 

bgplot3d({ 
    plot.new() 
    title(main = 'This is the main title', line = 3) 
    mtext(side = 1, 'This is a subtitle', line = 4) 
    # use here any other way you fancy to write your title 
}) 

います:

                                      0123を                                                        RGL title with plot3d and bgplot3d

1つのかなり重要な注意点は、しかしそこには、ヘルプにノートとして記載bgplot3d用のページ:

背景プロットは、ビットマップとして描かれているので、彼らは非常に優雅 のサイズを変更しないでください。最初にウィンドウのサイズを設定してから、そのサイズで の背景を描画することをお勧めします。

関連する問題