2013-01-11 11 views
10

smoothScatter()関数を使用してRで色濃度散布図を作成しています。smoothScatterを使用して作成した色濃度散布図のR凡例

例:

## A largish data set 
n <- 10000 
x1 <- matrix(rnorm(n), ncol = 2) 
x2 <- matrix(rnorm(n, mean = 3, sd = 1.5), ncol = 2) 
x <- rbind(x1, x2) 
oldpar <- par(mfrow = c(2, 2)) 
smoothScatter(x, nrpoints = 0) 

出力:

enter image description here

私が午前問題は、私は、数値的に相対的な差を説明する伝説/カラースケールを追加する方法がわからないだということです異なる色合いの間。たとえば、上の図の最も濃い青が、何らかの種類の凡例や色の尺度なしで、最も薄い青の密度の2倍、10倍、または100倍の密度であるかどうかを判断する方法はありません。 Rには、このようなスケールを作るために必要な情報を取得する方法や、この性質のカラースケールを自動的に生成できる何かが組み込まれていますか?ここで

+0

参照[このコメント](http://stackoverflow.com/questions/8899096/color-bar-for-smoothscatter-in-r#comment11130419_8899096) – mnel

+0

@mnel必要に応じて、これらのアプローチの1つに頼るかもしれませんが、理想的には、私は 'smoothScatter()'を使ってそれを行う方法をやっています。 –

+0

あなたの解決策は(おそらく) 'postPlotHook'引数の使用を伴います。凡例をどのように作成するかについては、 'fields :: image.plot'関数を見ることができます。 – mnel

答えて

9

あなたが望む結果を得るためにimage.plotと周りいじると見ることができfields::imageplotに依存している答えであり、いくつかは

fudgeit <- function(){ 
    xm <- get('xm', envir = parent.frame(1)) 
    ym <- get('ym', envir = parent.frame(1)) 
    z <- get('dens', envir = parent.frame(1)) 
    colramp <- get('colramp', parent.frame(1)) 
    fields::image.plot(xm,ym,z, col = colramp(256), legend.only = T, add =F) 
} 

par(mar = c(5,4,4,5) + .1) 
smoothScatter(x, nrpoints = 0, postPlotHook = fudgeit) 

enter image description here

余白が正しい取得するpar(mar)をいじります?bkde2Dtransformation引数をsmoothScatterに設定すると、色が何を表しているかがわかります。

+1

質問:棒グラフの0.5は何を示していますか? –

+1

さて、私は値がfudgeitの関数の 'z'の数であることを知っています。しかしzは何を示しているのですか? –

+0

私は2番目の質問です。スケール上の数字は何を意味しますか? – Rodrigo

関連する問題