2017-05-14 17 views
2

latticeパッケージのlevelplot機能を使用してヒートマップをプロットします。私はそのようにスケールを調整したいColourscale:転移開始位置を変更

d <- 20 
df <- expand.grid(x = 1:d, y = 1:d) 
df$z <- runif(d*d, -1, 1) 

levelplot(z ~ x * y, data = df, 
      col.regions = cols) 

enter image description here

cols <- colorRampPalette(c("blue", "white", "red"))(256) 

小さな例:-1から1まで私のマトリックス範囲内の値とIは、以下の基準を使用しましたスケールのより大きな部分は白です。私は手動で遷移を開始する場所を定義しなければならないとしますが、0に近いときは遅い(つまり白)、1や-1に近づくときは速くなります。

これを行う方法に関するアドバイスをいただければ幸いです。

+0

から非常に良くパレットで行くことができます'ggplot'で行います:[scale_fill_gradient2()で" mid "範囲を定義することはできますか?](http://stackoverflow.com/questions/21758175/is-it-possible-to-define -the-mid-range-in-scale-fill-gradient2/21758729#21758729) – Henrik

+0

リンクありがとう!可能であれば、私は相関行列を計算するのではなく、既存の行列をプロットしたいので格子に固執したいと思います。これを格子でもっと簡単に見つけることができます... – oak

+0

OK!しかし、私はあなたに保証することができます。格子からggplotへの移行はそれほど難しくありません。とにかく幸運! – Henrik

答えて

0

補間をsplineに切り替えて、よりスムーズな移行を行うことができます。

cols <- colorRampPalette(c("blue", "white", "red"), interpolate = "spline")(256) 

enter image description here

また、私はあなたがどのようにあなたがかもしれlattice`、ここでの `の使用に限定していないRColorBrewer

cols2 <- colorRampPalette(RColorBrewer::brewer.pal(11, "RdBu"))(256) 
levelplot(z ~ x * y, data = df, col.regions = rev(cols2)) 

enter image description here

関連する問題