3

3 つの異なるプロットにポイントを並行して追加する方法を探しています。

s3d1という名前の3 つの散布図がs3d2ありs3d3、1 つのウィンドウに

layout(matrix(c(1,2,1,3),2, 2, byrow = TRUE))
s3d1<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
s3d2<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
s3d3<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)

にポイントを追加しようとするとs3d1

s3d1$points3d(mtcars[,3],mtcars[,4],mtcars[,5],col="red")

ポイントはに行きますがs3d3、そうではありませんs3d1。何が欠けていますか?

詳細 : プログラムの実行中にデータ ポイントを取得します。そのため、特定のプロットに固有のデータを取得するたびに、これらの各プロットにポイントを追加する必要があります。

アップデート :

par()機能も試した

par(fig=c(0,0.65,0,1), new=TRUE)
s3d1<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
par(fig=c(0.7,1,0.5,1), new=TRUE)
s3d2<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
par(fig=c(0,0.65,0,1), new=TRUE)
s3d1$points3d(mtcars[,3],mtcars[,4],mtcars[,5],col="red")

s3d1$points3dに新しいポイントを追加しませんs3d1(さらには にも追加しませんs3d2)。何か案は ?

4

1 に答える 1

2

points3d()を実行しようとして のソースを見ると、s3d1$points3d既に開いていると想定される既存のプロットにポイントを追加するだけであることがわかります。つまり、ポイント/プロットは s3d1,2,3 オブジェクトに格納されず、さまざまなビューにプロットするために必要な変換情報のみが格納されます。

あなたがやろうとしていることを行うには、通常のグラフィックス デバイス コマンドを使用するだけです。たとえばdev.new、新しいプロット ウィンドウを開きdev.set、アクティブなウィンドウを切り替えることができます。次のようなことができます:

dev.new(); h1=dev.cur()
s3d1<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
dev.new(); h2=dev.cur()
s3d2<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
dev.new(); h3=dev.cur()
s3d3<-scatterplot3d(mtcars[,3],mtcars[,4],mtcars[,5],main="common",pch=20)
dev.set(h1)
s3d1$points3d(mtcars[,3],mtcars[,4],mtcars[,5],col="red")

詳細については、こちらも?dev.newご覧ください。

于 2011-12-13T16:39:51.090 に答える