0

まず、これは宿題の問題です。問題は元です。応用多変量解析入門の 26 ページからの 2.6。次のようにレイアウトされています。

緯度と経度を散布図として、深さを円として使用して、地震データのバブル プロットを作成します。深さが大きいほど円は小さくなります。さらに、マグニチュードを 3 つの等しい範囲に分割し、ポイントが属するマグニチュード グループに応じて、バブル プロット内のポイントに異なる記号を付けます。

基本グラフィックスにあるシンボルは、ラティスではうまく機能しないことがわかりました。また、ラティスにシンボル サイズ (つまり、バブル サイズ) を変更する機能があるかどうかもわかりません。昨夜、必死になってラティスブックを購入しました。いくつかの例で見られるように、「カット」またはパネルごとに色と形を記号化することができます。次に、シンボルサイズも操作できるという仮定の下で作業していますが、その方法を理解できていません。

私のコードは次のようになります:

    plot(xyplot(lat ~ long | cut(mag, 3), data=quakes,
        layout=c(3,1), xlab="Longitude", ylab="Latitude",
        panel = function(x,y){
          grid.circle(x,y,r=sqrt(quakes$depth),draw=TRUE)
        }
    ))

grid パッケージを使用して円を描画しようとしましたが、これを実行すると空白のプロットが表示されます。誰かが私を正しい方向に向けてもらえますか? 私は非常に感謝されます!

4

3 に答える 3

1

default.units = "native"追加するだけですgrid.circle()

plot(xyplot(lat ~ long | cut(mag, 3), data=quakes,
            layout=c(3,1), xlab="Longitude", ylab="Latitude",
            panel = function(x,y){
              grid.circle(x,y,r=sqrt(quakes$depth),draw=TRUE, default.units = "native")
            }
))

明らかに、必要なものを取得するには、いくつかの設定をいじる必要があります。

ここに画像の説明を入力

于 2016-07-29T17:11:01.203 に答える
1

これは、格子パッケージを使用せずに必要なプロットを作成するためのコードです。必要に応じて、そのすべてを無視してプロット コマンドに直接進むことができるように、明らかに独自の偽のデータを生成する必要がありました。

####################################################################
#Pseudo Data
n = 20
latitude = sample(1:100,n)
longitude = sample(1:100,n)
depth = runif(n,0,.5)
magnitude = sample(1:100,n)
groups = rep(NA,n)

for(i in 1:n){
if(magnitude[i] <= 33){
    groups[i] = 1
}else if (magnitude[i] > 33 & magnitude[i] <=66){
    groups[i] = 2
}else{
    groups[i] = 3
}
}
####################################################################

#The actual code for generating the plot
plot(latitude[groups==1],longitude[groups==1],col="blue",pch=19,ylim=c(0,100),xlim=c(0,100),
     xlab="Latitude",ylab="Longitude")
points(latitude[groups==2],longitude[groups==2],col="red",pch=15)
points(latitude[groups==3],longitude[groups==3],col="green",pch=17)

points(latitude[groups==1],longitude[groups==1],col="blue",cex=1/depth[groups==1])
points(latitude[groups==2],longitude[groups==2],col="red",cex=1/depth[groups==2])
points(latitude[groups==3],longitude[groups==3],col="green",cex=1/depth[groups==3])

ここに画像の説明を入力

于 2013-09-10T17:27:28.243 に答える