2017-12-07 44 views
2

私は、2つの変数aとbの間に相互作用があり、私の応答変数に大きな影響を与えていると言ったモデルがあります。 3つはすべて連続した数値変数です。詳細については、cは私の応答変数の変化率、bは予測変数の変化率、そしてaは平均年間降雨量です。解析単位は、ラスタ内のピクセルです。だから、私のモデルは、私のプレディクタが私の反応にどのように影響するかを年降水量が変更することを意味していると私に言います3つの連続変数からの等高線プロットまたはヒートマップ

この相互作用を視覚化するために、x軸とy軸にaとbを付けた等高線プロット/ヒートマップ/レベルプロットを使用したいと思います。 aとb。私は非常にきれいや解釈が容易な散布図でこれを行うが、そのことはできません。

qplot(b, a, colour = c) + 
    scale_colour_gradient(low="green", high="red") + 

enter image description here

を私が得るすべてのエラーですが、私は等高線図/ヒートマップ/レベルのプロットをプロットしようとすると、 、空白のプロットまたは醜いプロット。

ggplot(data = Mod, aes(x = Rain, y = Bomas, z = Fire)) + 
    geom_contour() 

Warning message: 
Not possible to generate contour data 

geom_rasterが最初に私にError: cannot allocate vector of size 81567.2 Gbを与えますが、私は私のデータを丸めるときに生成します:

geom_contour

は私にエラーを与える

ggplot(data = df, aes(x = a, y = b, z = c)) + 
    geom_raster(aes(fill = c)) 

enter image description here

geom_rasterコードにinterpolate = TRUEを追加するだけで線が少しぼやけます。

geom_tileは空白のグラフを生成しますが、Cのためのスケールバーで:

ggplot(data = df, aes(x = a, y = b, z = c)) + 
    geom_tile(aes(color = c)) 

enter image description here

私もstat_density2dを使用してCに充填および/または色を設定しようとしましたが、ちょうどエラーを得て、私もlatticeパッケージにlevelplotを使用してみましたが、それは、この生成します

levelplot(c ~ a * b, data = df, 
      aspect = "asp", contour = TRUE, 
      xlab = "a", 
      ylab = "b") 

enter image description here

私が遭遇している問題は、関数が連続するxとy変数を扱うように設定されていないと思われます。すべての例は要素を使用しているようです。私はビンの幅を変えることでこれを補うことができると思っていただろうが、それはうまくいかないようだ。 3つの連続変数でヒートマップを作成できる関数はありますか?あるいは、私のaおよびb変数を要因として扱い、私のデータに適したビンを持つデータフレームを手動で作成する必要がありますか?

あなた自身のために試してみたいなら、あなたは私が持ってるものに同様の問題を得る:

df<- as.data.frame(rnorm(1:1068)) 
df[,2] <- rnorm(1:1068) 
df[,3] <- rnorm(1:1068) 
names(df) <- c("a", "b", "c") 

答えて

1

あなたは自動ビンを取得し、例えばstat_summary_2dを使用しての手段を計算することができます。

ggplot(df, aes(a, b, z = c)) + 
    stat_summary_2d() + 
    geom_point(shape = 1, col = 'white') + 
    viridis::scale_fill_viridis() 

enter image description here

もう一つの良いオプションは、3番目の変数によって、あなたのデータをスライスし、小さな倍数をプロットすることです。これは実際にも、ランダムなデータのために非常にうまく表示されません。

library(ggplot2) 
ggplot(df, aes(a, b)) + 
    geom_point() + 
    facet_wrap(~cut_number(c, 4)) 

enter image description here

+0

はあなたの最初の図の色は全体のプロットをカバーして、これは拡張することができるどのように知っていますか? – James

+0

観測値のないビンの平均値は計算できません。 – Axeman

関連する問題