2016-04-05 24 views
4

Her fasetin kendi efsanesine sahip yüzleri çizmeye çalışıyorum. Bununla birlikte, her şeyin düzgün bir şekilde hizalanmasını sağlamak için biraz sıkıntı yaşıyorum.Yönlendirilmiş arazileri ve efsaneleri hizalama

dat <- structure(list(group1 = structure(c(1L, 1L, 2L, 2L, 2L), .Label = c("A", 
"B"), class = "factor"), group2 = structure(c(1L, 2L, 1L, 3L, 
2L), .Label = c("a", "b", "c"), class = "factor"), x = c("1", 
"2", "3", "4", "2"), y = c("1", "2", "3", "4", "3")), .Names = c("group1", 
"group2", "x", "y"), row.names = c(NA, 5L), class = "data.frame") 

dat <- split(dat, f = dat$group1) 

library(ggplot2) 
p1 <- ggplot(dat$A) + 
    geom_point(aes(x=x, y=y, colour=group2)) + 
    facet_wrap(~group1) + 
    guides(colour=guide_legend(nrow=2)) + 
    scale_colour_manual(values=c(a = "green", b = "red", c = "blue"), 
         labels=c(a = "green", b = "red", c = "blue")) 

p2 <- p1 %+% dat$B 

gridExtra kullanma sorunu araziler hizaya kalmamasıdır:

library(gridExtra) 
grid.arrange(p1, p2, p2, p1, ncol=2) 

enter image description here

Ve efsaneler biraz ortalanır cowplot kullanarak:

library(cowplot) 
plot_grid(p1, p2, p2, p1, ncol=2, align="hv") 

Denedim legend.justification eklenmesi ve/veya legend.position ama hiçbir etkisi olmadan.

enter image description here

nasıl araziler/efsaneleri hem hizalanmış alabilirim?

+0

Biz 'kılavuzlar (sütun = guide_legend (sat_say = 3))' efsaneler kaplayacak kadar aynı genişlik boyutu ekleyebilir. – zx8754

+0

@ zx8754 gerçek verilerimin, fasete göre 2-10 arasında değişen çok daha fazla faktör seviyesi vardır. Birkaç sütuna sahip olmanın, ancak değişen sayıda sütun bulundurmanın bir yolu yoktur. – beetroot

cevap

7

the experimental egg package deneyebilirsiniz. Her güncelleme ile bu kod türünü kırma alışkanlığı var ggplot2, bu nedenle kırılgan bir geçici çözüm düşünün

grid.draw(ggarrange(plots=list(p1,p2,p2,p1))) 

Not.

enter image description here

+0

Teşekkürler, 'ggarrange' işlevine erişmek için ne yapmalıyım? – beetroot

+0

@Cath Ben hala orada ne yapmak zorunda olduğunu anlayamadım .. – beetroot

+2

@beetroot: 'devtools :: install_github ('baptiste/yumurta')' yüklemek için – Cath