2015-08-17 3 views
-3

Я использую facet_grid для совместной визуализации данных в соответствии с двумя факторами. Один фактор - слишком много уровней, чтобы соответствовать одной строке. Поэтому я хотел бы достичь чего-то вроде facet_wrap, но с двумя размерами:Оберните одно измерение в facet_grid (ggplot2)

  1. Можно ли использовать facet_wrap с двумя факторами?
  2. Можно ли использовать facet_grid для обертывания одного фактора?

Вывод должен выглядеть

A B C 
. . . 1 
. . . 2 

D E  
. .  1 
. .  2 

фактор 1 как 5 уровней А-Е, обернутые на 2 строки и фактор 2 в виде двух уровней 1-2, повторяющихся в каждом ряду.

Вот практический пример, чтобы играть с:

library(ggplot2) 
df <- data.frame(y=rnorm(1000), f1=rep(1:10, 100), f2=rep(1:2, each=500)) 
ggplot(df, aes(x=x)) + geom_histogram() + facet_grid(f2~f1) 

Я хотел бы разделить изображение на две части, с пятью первых уровней на вершине, и последние пять под, сохраняя при этом 1 и 2 строк для каждого.

Большое спасибо за ваше внимание!

+1

Просьба представить воспроизводимый пример – Koundy

+0

Невозможно помочь больше без воспроизводимых данных, но вы можете захотеть изучить их разделение на два участка и разместить их на одном дисплее. См. Http://stackoverflow.com/questions/30015175/multiple-row-of-charts-in-ggplot-without-using-facet для близкого (но не точного) примера подхода – Ricky

+1

facet_wrap может использоваться с несколькими факторами, например. 'facet_wrap (~ a + b)' – baptiste

ответ

0

Там не встраивается в функциональности, чтобы сделать это в ggplot2, но вы можете приблизить это поведение с помощью grid.arrange из gridExtra:

library(gridExtra) 
p1 <- ggplot(df[df$f1 %in% 1:5,], aes(x=y)) + 
    geom_histogram() + 
    facet_grid(f2~f1) 
p2 <- ggplot(df[df$f1 %in% 6:10,], aes(x=y)) + 
    geom_histogram() + 
    facet_grid(f2~f1) 

grid.arrange(p1,p2,nrow = 2) 

Выравнивание между двумя отдельными участками, как правило, не быть идеально. Он может быть выровнен более точно, но не без каких-либо усилий (подробное воспроизведение в сетке ).

+0

Большое спасибо. Кажется, это действительно то, что является самым близким из того, что я хочу! – Julien

Смежные вопросы