2012-04-07 19 views
10

Şeritlerin her zaman ggplot2 tarafından oluşturulan arsa üzerinde olduğu anlaşılmaktadır. Arsanın altına taşınabiliyorlar mı? ÖrneğinFaceting yaparken şerit etiketleri nasıl gösteriliyor?

: üstte

library(ggplot2) 
qplot(hwy, cty, data = mpg) + facet_grid(. ~ manufacturer) 

görüntüler araba bilgileri. En altta gösterilebilir mi?

+2

Benzer bir soru ggplot posta listesindeki bir süre yaş içinde istendi. [Buraya bakın] (http://groups.google.com/group/ggplot2/browse_thread/thread/415c00e3373c9cc8/8fb65cc4aa0849cf?lnk=gst&q=facet+text+label#8fb65cc4aa0849cf) –

+0

Teşekkürler !!! Bu kadar zor olduğunu farketmedim –

+0

Ayrıca bakınız: http://stackoverflow.com/questions/3261597/can-i-change-the-position-of-the-strip-label-in-ggplot-from-the- başa-botto (başka bir olumsuz yanıt) –

cevap

6

Güncelleme:ggplot2 sürüm 2.1.0 kullanarak, switch = 'x' kullanmayı düşünün. Detaylar için bkz. ?facet_grid.

gtable işlevlerini kullanarak şeridi taşımak kolaydır. (Ya Anter versiyonu için here bakınız - x ekseni ve şerit takas)

library(ggplot2) 
library(gtable) 
library(grid) 

p <- ggplot(mpg, aes(hwy, cty)) + geom_point() + facet_grid(. ~ manufacturer) + 
    theme(strip.text.x = element_text(angle = 90, vjust = 1), 
      strip.background = element_rect(fill = NA)) 

# Convert the plot to a grob 
gt <- ggplotGrob(p) 

# Get the positions of the panels in the layout: t = top, l = left, ... 
panels <-c(subset(gt$layout, grepl("panel", gt$layout$name), select = t:r)) 

# Add a row below the x-axis tick mark labels, 
# the same height as the strip 
gt = gtable_add_rows(gt, gt$height[min(panels$t)-1], max(panels$b) + 2) 

# Get the strip grob 
stripGrob = gtable_filter(gt, "strip-t") 

# Insert the strip grob into the new row 
gt = gtable_add_grob(gt, stripGrob, t = max(panels$b) + 3, l = min(panels$l), r = max(panels$r)) 

# remove the old strip 
gt = gt[-(min(panels$t)-1), ] 

grid.newpage() 
grid.draw(gt) 

enter image description here

+1

Eğer benim gibiyseniz ve x-ekseninin üzerindeki * şerit etiketlerini istiyorsanız, 'gt = gtable_add_grob (gt, stripGrob, t = max (panel) kullanabilirsiniz. Sandy'nin sahip olduğu yerin yerine $ b) + 1, l = dak (panel $ l), r = maks (paneller $ r)) – Nova