2013-08-05 23 views
5

Etiketleri 1 satır ve 5 sütun içeren bir yüzlü panelde çevirmeye çalışıyorum, böylece faset başlıkları en altta görünecek ve x ekseni yönlerin üstünde görünecektir.ggplot2 ile faset etiketi ve x ekseni çevirin

Bunun nedeni, üstbilgileri grafiğin hemen altında olacak bir tablo için yeniden kullanmak istiyorum.

Dolayısıyla bu örnekte

...

library(ggplot2) 

my.hist<-ggplot(diamonds, aes(clarity)) + geom_bar() 

my.hist + facet_wrap(~ cut, ncol=5) + coord_flip() 

Ben "kes" etiketleri grafiğin altında göstermek isterim. Facet_grid'in anahtarı tutabileceğini düşünüyordum, ama sadece bir tahmin.

Bunu nasıl gerçekleştireceğini bilen var mı? arsa kolaydır altında

+1

Bu sorunun cevabının [this] (http://stackoverflow.com/q/3261597/324364) veya [t] 'den beri değiştiğinin farkında değilim. kendi] (http://stackoverflow.com/q/10058839/324364). – joran

+0

Kötü haberlere benziyor ... Muhtemelen konu dışı ama kafesin bu işlevselliği sunup sunmadığını merak ediyorum. – wesmantooth

cevap

7

bir kene işaretleri ve etiketlerin konumunu tersine çevirmek için çünkü

library(gtable) 
g <- ggplotGrob(p) 

strips <- gtable_filter(g, "strip_t", trim=FALSE) 
grid.newpage() 
grid.draw(rbind(g, strips[3,], size="first")) 

eksenleri Ancak daha fazla bakım gerektirir, faset şeritlerini alınıyor. Belki

tweak_axis <- function(a){ 
    inner <- a[["children"]]["axis"][[1]] 
    inner[["grobs"]] <- rev(inner[["grobs"]]) 
    inner$grobs[[2]]$y <- inner$grobs[[2]]$y - unit(0.15, "cm") 
    a[["children"]]["axis"][[1]] <- inner 
    a 
} 

axes <- gtable_filter(g, "axis_b", trim=FALSE) 
axes$grobs <- lapply(axes$grobs, tweak_axis) 
grid.newpage() 
grid.draw(axes) 

Düzenleme, bununla başlatabilirsiniz: Yukarıda dayalı "tam" çözüm olabilir (bariz uyarılar ile)

grid.newpage() 
g2 <- g 
new_axes <- lapply(g2$grobs[grepl("axis_b", g2$layout$name)], tweak_axis) 
g$grobs[grepl("strip_t", g$layout$name)] <- new_axes 
g$grobs[grepl("axis_b", g$layout$name)] <- g2$grobs[grepl("strip_t", g2$layout$name)] 
# heights should be changed too, but it's kind of ok here 
xlab <- 7; title <- 1:2 
grid.draw(rbind(g[xlab,], g[-c(title, xlab), ], size="last")) 

enter image description here

+1

kohske, eksenler için bazı hileler yayınladı: http://rpubs.com/kohske/dual_axis_in_ggplot2 – baptiste

+0

"strip_t" yi kullanıyorum ve sonra "strips" komutunu çalıştırıyorum "TableGrob (6 x 5)" düzeni "çıktı: 0 grobs'. Bu amaçlanan etki mi? Ben de soruyorum çünkü son çıktıda bir hata alıyorum, 'mmm'de hata wesmantooth

+1

o gtable 5 grobs olmalıdır, p 'ikinci satır (' facet_wrap') dahil olmak üzere güncellenen arsa olduğundan emin olun. Diğer hatayı ele almak için kodu güncelledim. – baptiste

İlgili konular