2016-04-12 10 views
1

Bir raster çizdirmek istiyorum, böylece ölçek sınırları dışındaki değerler, ölçeklerin aynı renklerini kendileriyle sınırlar.ggplot'ta sınırlar olarak sınırları dışına boyama

# 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)) 

Sonuç: aut example image

Tüm değerler grey50 (na.value) vardır!

Ben de scale_fill_gradient2() seçenekleri ile denedim: Şu anda eşleştirilir bağlı değerlerin out renklendirebilirsiniz nasıl

oob=squish #This does not seem to exists anymore 

ve

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

ve

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

NA'ya, skalanın limit değerleri ile mi? Yukarıdaki örnekte > 0.5 değerleri mavi, < -0.5 kırmızı olmalıdır. Bunu veri kümesini keserek, faktörleri kullanarak yapabilirim, ama sürekli bir renk skalası istiyorum. Gösterilen limitleri ayarlamak için de molalar kullanabilirim, ancak komplo içeriğinden bağımsız olarak tam renk skalasının görüntülenmesini istiyorum. Mümkünse verilerin değiştirilmesini de engellemek isterim.

+0

@Axeman Verilere göre oob işlevi mi yoksa modifikasyon mu demek istiyorsunuz? Evet tabi ki verileri değiştirebilirim, ama bundan kaçınmak isterim. Nedeni, örneğin, bir 'stat_summary()' kullanmak istersem, vidalanır. Evet, bu konuda çalışabilirim, ama basit olması gereken bir şey için biraz fazla hackish gibi görünüyor (ve oob = squish' kullanarak önceki ggplot sürümlerinde çalıştı) (işte bu şekilde çalışmaz) oob = function (z) ifelse (z <0.5, ifelse (z> -0,5, z, -0,5), 0,5) ') – AF7

cevap

1

oob = squish artık çalışmıyorsa, ggplot2 işlevinin bazılarının scales paketine aktarılmış olduğundan emin olun. Önce scales yükleyin veya bunun yerine oob = scales::squish yazın.