2011-12-16 37 views
2

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

私はスケール=リスト(矢印= 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'をクリアする必要があります。

EDIT:ここ

サンプルコードである。

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軸、及びだけ対角線ないが充填されているが、それは軸の問題を示しています。 cloudlattice)のドキュメントから

+0

再現可能な例を追加してください。リンク先のページには格子とggplot2の両方のプロットが含まれています。あいまいさを避け、サンプルデータセットを追加する。 –

+0

リンク先のページで図6.15であることに気付きました。 – FabbyRob

答えて

1

色が

を変更 カットポイントのベクトルを与える「で」だから、ベクトル、ではないのリストにする必要がありますベクター。あなたが取得しているエラーは、数値にベクトルのリストを変換するため、障害によって引き起こされる:

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つのベクトルにする必要があります。

+0

クラウド(ラティス)の文書から: 'スケール:スケールを説明するリスト。他の高レベル関数と同じように、特別な名前のx、y、zを持つコンポーネントも含めることができます。軸に固有の値を指定して同様のリスト**にすることができます。 1つの長い数値ベクトルを与え、同じ場所を使用して3つのすべての軸にマークを付けます。 1つのベクトルは、1つの軸が終了し、別の軸が始まるところを示さない。私がしている場合: 'at = c(1:26,1:26,4 * 10^-6,4 * 10^-6)' 例えば、それは動作しますが、x Z軸上にはありません。 – FabbyRob

+0

異なるコンテキストで 'at'引数の使用方法が異なります。下の私の例を見てください。 –

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 ")) 
     )  ) 

enter image description here

Zの範囲をあなたがそれらの小さな値で提供したものではないので、その現実を受け入れる必要があります。あなたが割合をラベル付けする場合は、私はあなたにそれを行う方法を示しました。

関連する問題