2

ここで図6.15の方法を使用して、Rで3Dヒストグラムをプロットしています。

各軸に矢印の代わりに目盛りが表示されるように、scale = list(arrow=F) を設定しました。

プロットは問題ないように見えますが、軸の目盛りラベルを変更したいと思います。X 軸は 1 ~ 26、Y 軸は 1 ~ 24、Z 軸は 0 ~ 8E-6 です。理想的には、個別の x 値と y 値のそれぞれに 1 つのラベルを付けてから、z 軸上の適切な間隔でラベルを付けたいと思います。

スケール オプション 'tick.number' を使用してみましたが、1 つの数値しか使用できないか、リストの最初の数値を使用しているように見えるため、26 に設定すると、y 軸に余分な目盛りが表示され、 z 軸がゴミのように見えます。

2D プロットの場合と同様に、スケールに「at」オプションと「labels」オプションがあるようですが、機能しないようです。ドキュメントは、各パネルの場所とラベルを含むベクトルのリストである必要があることを示しているので、試しました:

at = list(c(1:26), c(1:24), c(2*10^-6, 4*10^-6, 8*10^-6))

しかし、それは不平を言います:

(list) object cannot be coerces to type 'double'

「at」の使い方がわかれば、「label」が明確になるはずです。

編集:

サンプルコードは次のとおりです。

library(latticeExtra)
Cg = 1:25
Cr = 1:25
freqs = rnorm(25, .5, .1)
cloud(freqs~Cg*Cr, xlim=c(27,-1), ylim=c(25,-1), panel.3d.cloud=panel.3dbars, par.settings=list(box.3d = list(col="transparent")), col.facet="grey",  scales=list(arrows=F))

私のデータは X 軸と Y 軸の長さが異なり、対角線が塗りつぶされているだけでなく、軸の問題を示しています。

4

2 に答える 2

1

cloud( )のドキュメントからlattice:

'at' は、色が変化するカットポイントのベクトルを示します

したがって、ベクトルのリストではなく、ベクトルである必要があります。あなたが得ているエラーは、ベクトルのリストを数値に変換できなかったことが原因です:

at = list(c(1:26), c(1:24), c(2*10^-6, 4*10^-6, 8*10^-6))
> as.numeric(at)
Error: (list) object cannot be coerced to type 'double'

このatパラメーターは、 と同様に、色が変化する場所を表しますlevelplot。したがって、必要なのは 1 つのベクトルだけです。

于 2011-12-16T10:28:03.583 に答える
1

これらの結果にはさらに作業が必要ですが、それはあなたの要求を満たし、引数を「スケール」にリストとして渡すことの意味を示しています。

cloud(freqs~Cg*Cr, xlim=c(27,-1), ylim=c(25,-1),zlim=c(0,1), # needed to add zlim
   panel.3d.cloud=panel.3dbars, par.settings=list(box.3d = list(col="transparent")), 
   col.facet="grey",  
   scales=list(arrows=F, x=list(at = c(1:26), lab=c(1:26)) , 
                         y=list(at= c(1:24),  lab=c(1:24)),
                  z= list(rot=20,   # to prevent over-riding the tick marks
                          at= c(.2,.4,.8) ,      # data spans larger range
                          lab=c("2*10^-6  ", "4*10^-6  ", "8*10^-6  ") )
       )       )

ここに画像の説明を入力

z の範囲は、これらの小さな値で提供したものではないため、その現実を受け入れる必要があります。プロポーションにラベルを付け直したい場合は、その方法を示しました。

于 2011-12-16T14:34:43.080 に答える