2012-07-02 12 views
11

scale_fill_gradient2 için üst limitleri değiştirilmesi değerler < 0 colorscaling etkiler?asimetrik renk dağılımı? 0 etrafında renk dağılımı renk değerlerinin bir asimetrik dağılımını almanın bir yolu yoktur, her zaman simetrik olarak görünüyor olarak

Burada

geom_tile() kullanılarak bir grafiğin az bir örneği: simetrik sınırlarına

data <- read.csv("http://protzkeule.de/data.csv") 
p <- ggplot(data=data, aes(x=variable, y=meas)) + geom_tile(aes(fill=value)) 

arsa:

p + scale_fill_gradient2(low="blue", mid="white", high="red", guide="colorbar", limits=c(-.1,.1)) 

ancak üst sınır değiştirirken, düşük colormapping (Colorbar izlemek de değişir): ne istiyorsun

p + scale_fill_gradient2(low="blue", mid="white", high="red", guide="colorbar", limits=c(-.1,.3)) 
+0

ben sen yanlış anlama olabilir arıyorum, ancak 'midpoint = -0.1' ifadesini scale_fill_gradient2'ye geçirmeyi deneyin. İstediğin bu mu? – joran

+0

Ben '-0.1' orada belli ki' 0.1' değil istedim, ama o Brian'ın yanıta göre, zaten aradığını değil şimdi düşünüyorum. – joran

cevap

14

scale_fill_gradientn olduğunu . argümanlar olsa çok net değildir (bir saatimi aldı ya da öylesine nihayet bunun bir parçası anlamaya):

library("scales") 
p + scale_fill_gradientn(colours = c("blue","white","red"), 
         values = rescale(c(-.1,0,.3)), 
         guide = "colorbar", limits=c(-.1,.3)) 

verir Hangi:

enter image description here

+0

Teşekkürler, şimdi anladım. Eğer yanılıyorsam düzeltin ama 'değerler' ile 'renkler' vektöründen bir rengin eşlenmiş olduğu değerleri atadınız mı? Anlamadığım tek şey values' 'geçirilen vektör colours'' geçirilen vektör daha unsurları varsa ne olur. – Dahaniel

+0

"values" ve "colours" aynı uzunlukta olmalıdır. Bunlar etkili bir şekilde eşleştirilir, burada değer o noktadaki renge karşılık gelir, ve onunla her şey arasındaki bir sonraki nokta enterpole edilir. Aslında aynı uzunlukta olmasaydı ne olacağını bilmiyorum; En azından kavramsal olarak bir hatadır, ama gerçek bir hatanın atılıp atılmadığını bilmiyorum. Örneğinizde, -0.1 mavi ile eşleştirilir, 0.0 beyaz ile eşleştirilir ve 0,3 kırmızı ile eşlenir; -0,1 ve 0,0 arasındaki değerler mavi ve beyaz arasında enterpolasyonludur; 0,0 ve 0,3 arasındaki değerler beyaz ve kırmızı arasında enterpolasyonludur. –

+0

@BrianDiggs Ben de benzer bir şekilde çözüm kullanıyorum ancak değerlerin ilk avuç Discretely renk çubuğunu görüntülemek için bir yol var? Örneğin. [burada sepal uzunluğu cevap] (https://stackoverflow.com/questions/17713456/easiest-way-to-discretize-continuous-scales-for-ggplot2-color-scales) – guy