2013-01-31 12 views
5

Yönlendirilmiş bir ggplot2 nokta çizimini çizmek istiyorum. x ekseni süreklidir, y ekseni hayvanların listesidir. Yeme değişkenine göre iki değişken çizilir ve işaretlenir.ggplot2: Her bir faset için ayrı bir karakter değişkeninin sırasını serbest ölçekte tersine çevirmek?

Y ekseni serbest bir ölçekte. Çünkü her bir hayvan yalnızca bir tane davranışı kategorisinde görünür.

library(ggplot2) 

# First clean up the data set: 
msleep.noNA <- msleep[!is.na(msleep$vore),] 
msleep.noNA.red <- msleep.noNA[c(1,3,6,7)] 
msleep.noNA.red <- msleep.noNA.red[!is.na(msleep.noNA.red[4]),] 
msleep.noNA.red <- melt(msleep.noNA.red) 

pg <- ggplot(msleep.noNA.red, aes(value, name, colour = variable)) + 
     geom_point() + 
     facet_grid(vore ~ ., scale="free_y", space = "free_y") 
pg 

# Try to reverse order of the y axis: 
pg + scale_y_reverse() 

# Not possible because its a factor, but it's not classified as such: 
class(msleep.noNA.red$name) 

her alt planında alfabetik Ben hayvan adlarının listesini yapmak nasıl olarak herkes bazı ipuçları var mı?

+0

sen (tercihen 'dput' kullanarak) verilerinizi yapıştırmak olabilir:

msleep.noNA.red <- within(msleep.noNA.red, name <- ordered(name, levels = rev(sort(unique(name))))) 

Şimdi verileri çizebilirsiniz: seviyeleri alfabetik azalan vardır Kodunuzu çoğaltmak için? – Arun

+1

Merhaba Arun, Yorumunuz için teşekkürler. msleep veri seti ggplot2'nin bir parçası olarak kullanılabilir. Tüm komutlar ggplot2 yüklü bir platform üzerinde çalışmalıdır. –

+1

"as.factor" kullanarak bir şeyleri bir şeye dönüştürebilirsiniz, yani msleep.noNA.red $ name <- as.factor (msleep.noNA.red $ name) 'bunu bir faktör olarak dönüştürecek ve sonra çalışabilirsiniz bununla başka herhangi bir faktörün olduğu gibi. Bu yardımcı olur mu? –

cevap

8

Bir faktöre dize vektör dönüşümü ve seviyelerinin sırasını belirtebilirsiniz:

Aşağıdaki komut bir faktör oluşturacaktır. Biz işe yarayabilir, böylece

pg <- ggplot(msleep.noNA.red, aes(value, name, colour = variable)) + 
    geom_point() + 
    facet_grid(vore ~ ., scale="free_y", space = "free_y") 

enter image description here

+0

Teşekkür ederiz! Tam olarak bu! –

+0

İhtiyacım yok, burada() 'düz eski' faktörü() 'sadece iyi çalışıyor. – Gregor

+2

Temel veri alanını değiştirmemeyi tercih ederseniz, scale_y_reverse() 'yerine scale_y_discrete (limitler = rev (level (msleep.noNA.red $ name)))' yi yapabilir ve işe yarayabilir. –

İlgili konular