2012-01-05 16 views
34

sırasını tersine çevirmek ggplot2 ama cevap bulmadan> 30min götürdü.Görünüşte yapmak çok basit bir şey scale_brewer

nasıl renklerin sırasını ters? documentation for scale_brewer bakarak, ben şüpheli olmak formatter= argüman olabilir düşündüm. Ben 'rev' ve sonra rev geçti, ama onlar hiçbir etkisi (hiçbir hata mesajı, sadece görmezden) var.

+0

pbaylis cevabı (resim 'yönü = -1''), başlıkta soruya basit cevap olarak görünmektedir, ama Joran en veya Josh, örneğin daha fazla kontrol elde Sadece ters olanı değil, keyfi bir renk dizisi geçirme. – PatrickT

cevap

39

Ben muhtemelen doğrudan brewer.pal kullanarak renkleri seçip scale_colour_manual kullanmak istediğiniz düşünüyorum:

ggplot(mtcars,aes(x = mpg, y = disp)) + 
    geom_point(aes(colour = factor(cyl))) + 
    scale_colour_manual(values = rev(brewer.pal(3,"BuPu"))) 

Sonra orada renklerin sırasını rev edebilirsiniz. Bunu yapmak için daha doğrudan bir yol şimdi var ggplot sürümü 2.0,0 itibariyle

aşağıdaki @pbaylis tarafından cevaba bakınız.

+2

+1 - Bu güzel. Aynı zamanda, ihtiyaç duyulan renk sayısında 'sabitlemek' de iyi olabilir: rev (brewer.pal (n = uzunluk (benzersiz (mtcars $ cyl)), "BuPu")). –

+0

... ya da “scale_fill_manual” hangi paradigmanın sizin coğrafi bölgeniz için en uygun olduğu. –

+0

Cevabınızı, gönderdiğim kodla güncellemekten çekinmeyin ve açıklık için mayınları kaldıracağım. – pbaylis

11

sen, orijinal data.frame içinde faktör seviyelerini tersine çevirebilir ve ardından çizmek RColorBrewer (hoş pakette) doğrudan etrafında muck istemiyorsanız:

dsamp <- diamonds[sample(nrow(diamonds), 1000), ] 

# Reverse the levels of the factor associated with color, here 'clarity' 
# (Might be safer to assign this to a new column named, e.g., 'clarity2') 
levels(dsamp$clarity) <- rev(levels(dsamp$clarity)) 

d <- qplot(carat, price, data = dsamp, colour = clarity) 
d + scale_colour_brewer(breaks = levels(dsamp$clarity)) 

Ve Eğer ters önce aynı sırada anahtarını yazdırmak istiyorsanız, sadece bunu:

d + scale_colour_brewer(breaks = rev(levels(dsamp$clarity))) 
18

Bu OP'ın sorunla yardımcı olmaz - biliyorum. scale_..._manual(values = rev(colorsYouHad)) yapıyor scale_..._brewer() gibi ayrık ölçeklerde için doğru cevaptır.

Yine de sürekli ölçekler için, sadece geçirebilirsiniz:

scale_..._...(..., trans = "reverse")

örneğin scale_..._brewer() sürekli eşdeğeri için: ggplot2 ait

scale_..._distiller("My Scale", palette = "Spectral", trans = "reverse")

+0

Kullanıcıları aynı şeyi yapmanın daha kolay bir yolunu bulma isteğini takdir ediyorum, ancak her iki cevap da _do_ çalışmasından dolayı Farklı bir cevabı çağırmak "doğru" olanı uygunsuz. Cevaplarıma yapılan yorumlara oldukça yanıt vericiyim. Cevabımın güncel olmadığını belirten basit bir yorum yeterli. – joran

+0

Bu benim için çalıştığı güzel, basit bir cevap, teşekkürler! – RobertMc

+0

'trans =" ​​reverse "' kullanılırken, aynı zamanda değerlerin sırasının değiştiğini unutmayın.Sürekli ölçekler için bu, efsane değerlerinin yukarı doğru – Lennert

27

CRAN sürümü artık Kullanıcıların col'i geri döndürmek için scale_brewer numaralı telefondan direction=-1 belirtmelerini sağlar. ors. Aşağıdaki, kabul edilen cevapla aynı grafiği oluşturur.

ggplot(mtcars,aes(x = mpg, y = disp)) + 
    geom_point(aes(colour = factor(cyl))) + 
    scale_colour_brewer(palette="BuPu", direction=-1) 
İlgili konular