2016-04-12 13 views
1

スケール制限外の値がスケール制限自体と同じ色になるように、ラスタをプロットしたいとします。ggplotの制限としての境界からの塗りつぶし

# Generate data 
pp <- function (n,r=4) { 
x <- seq(-r*pi, r*pi, len=n) 
df <- expand.grid(x=x, y=x) 
df$r <- sqrt(df$x^2 + df$y^2) 
df$z <- cos(df$r^2)*exp(-df$r/6) 
df 
} 
pp200 <- pp(200) 
ggplot(pp200, aes(x, y, fill = z)) + 
geom_raster() + 
scale_fill_gradient2(limits=c(-0.5, 0.5)) 

結果:境界値のうち example image

すべてがgrey50na.value)です!

私もscale_fill_gradient2()オプションで試してみました:私は現在、マッピングされたバインド値のうちに色をすることができますどのように

oob=squish #This does not seem to exists anymore 

oob=function(x, ...) x #does nothing 

oob=clip #this does not work: 
#Error in f(...) : argument "x2" is missing, with no default 

をNAには、スケールの限界値がありますか?上記の例では、値> 0.5は青色で、< -0.5は赤色でなければなりません。ファクタを使ってデータセットをカットすることで私ができることは分かっていますが、私は連続カラースケールが必要です。また、ブレークを使用して表示された制限を設定することもできますが、プロットの内容に関係なくフルカラースケールを表示することができます。可能であれば、データの変更を避けたいと思います。

+0

@Axemanあなたはoobの機能またはデータの変更を意味しますか?もちろん、私はデータを修正することができますが、私はそれを避けたいと思います。その理由は、たとえば、 'stat_summary()'を使用したい場合、それは嫌になります。はい、私はそれを回避することができますが、これは単純なものでなければならないこと(これは以前のggplotのバージョンでは 'oob = squish'を使っていました) z)ifelse(z <0.5、ifelse(z> -0.5、z、-0.5)、0.5) ') – AF7

答えて

1

oob = squishの理由は、ggplot2の機能の一部がscalesパッケージに転送されているためです。最初にscalesを入力するか、oob = scales::squishと入力してください。

関連する問題