изменение панелей графиков в r

Я хочу изменить порядок панели графиков. В настоящее время у меня есть 3 столбца разных классов, мне бы хотелось, чтобы был 1 столбец с тремя классами, расположенными друг над другом. Все они будут иметь одну и ту же ось X (в данном случае значения анализа основных компонентов), а затем зима или лето сезона будут по-прежнему находиться на оси Y для каждой из моих трех категорий. Вот что у меня есть: введите здесь описание изображенияЯ создал это с помощью своего кода:

bwplot(Comp1~ Season|Repro, data = moose,
   strip = strip.custom(var.name = c("f", "fc", "m"),strip.names=F, bg = 'white'),
   cex = .5, layout = c(3, 1),
   xlab = "Principal component 1", ylab = "Season",
   par.settings = list(
      box.rectangle = list(col = 1),
      box.umbrella  = list(col = 1),
      plot.symbol   = list(cex = .5, col = 1)),
       scales = list(x = list(relation = "same"),
                     y = list(relation = "same")))

Другим вариантом является размещение в ящичках диаграмм с 2 сезонами по оси X, PCA по оси Y, но 2 сезона разбиты на 3 группы внутри этих сезонов. В отличие от приведенного выше графика, где есть 3 панели, я хочу 2 панели (лето и зима), а затем в этих 2, чтобы f, fc, m для зимы были сгруппированы рядом друг с другом и на следующей панели (или в том же графике ) ф, фк, м на лето. По сути, как и следующее изображение, но переверните его на бок. Я использовал этот код, а затем оставшийся код сверху, чтобы создать этот график: bwplot(Season ~Comp1|Repro, data = moose,

введите здесь описание изображения

Вот примеры данных, с которыми можно попробовать код.

structure(list(ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 
6L, 6L, 6L, 6L, 7L, 7L), .Label = c("F07002", "F07004", "F07005", 
"M07016", "M10007", "M10011", "M10015"), class = "factor"), Season = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 2L, 2L, 1L, 1L), .Label = c("SUM", 
"WIN"), class = "factor"), Time = structure(c(1L, 2L, 1L, 2L, 
1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 
1L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 
2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L), .Label = c("day", "night"
), class = "factor"), Repro = structure(c(2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 2L, 
1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("f", "fc", "m"
), class = "factor"), Comp1 = c(-0.380080882, -0.610696209, -0.249409859, 
-0.409333188, -0.222490545, -0.204438065, -0.345230884, -0.142284942, 
0.750928418, 1.002325431, 0.450508246, 0.473959627, 1.059173278, 
0.911574612, 1.394915031, -0.448160403, -0.470799127, -0.760760938, 
-0.923465222, -1.522742066, -1.933918532, -0.83699801, -1.240214807, 
0.878163747, 0.756748992, 1.931795511, 1.802387012, 1.67483398, 
1.448883802, 0.974062472, 1.234001613, -0.439149936, -0.826745549, 
-0.42835036, -0.871512952, 0.17532518, 0.559407728, 0.976634392, 
-0.202405922, -0.633821539, -0.306163898, -0.302261589, 1.218779672, 
1.568575464, -0.310174732, -0.761785902), ln1wr = c(0.925765702, 
0.90999093, 1.109420337, 1.125676072, 1.081194815, 1.102770299, 
0.981029233, 1.019605156, 0.892407791, 0.894740178, 0.990098659, 
0.998570934, 1.280544881, 1.283292174, 0.152892746, 0.000499875, 
0.00039992, 0, 0, 1.820962221, 1.72698981, 1.829087366, 1.728020628, 
0.0009995, 0.000899595, 0, 0, 0.003693172, 0.003493889, 1.537705578, 
1.520475543, 1.410401436, 1.40550858, 1.258972223, 1.255302598, 
1.4981711, 1.505964504, 1.446048016, 1.132530507, 1.134944218, 
1.149653885, 1.148798304, 1.140553656, 1.14762465, 0.421797669, 
0.4069307)), .Names = c("ID", "Season", "Time", "Repro", "Comp1", 
"ln1wr"), class = "data.frame", row.names = c(NA, -46L))

person Kerry    schedule 21.11.2012    source источник
comment
Я думаю, вы просто хотите horizontal=TRUE, но мне все равно непонятно. Как всегда, пример данных, даже со случайными числами вместо ваших истинных значений, очень поможет.   -  person IRTFM    schedule 21.11.2012
comment
@DWin, добавив вашу команду, изменило все, от коробчатой ​​диаграммы до точечной диаграммы, и разбросало их по оси Y. Я отредактировал и добавил образцы данных.   -  person Kerry    schedule 22.11.2012
comment
Вы пробовали: bwplot(Season ~ Comp1|Repro, ..., horizontal=TRUE,)?   -  person IRTFM    schedule 23.11.2012


Ответы (1)


Все еще не совсем уверен, что вы хотели, но использование функции взаимодействия для двух факторов в левой части формулы может получить то, что вам нужно, после преобразования в горизонтальное значение TRUE.

bwplot(interaction(Season,Repro) ~ Comp1, data = moose,
   cex = .5, 
   xlab = "Principal component 1", ylab = "Season", horizontal=TRUE,
   par.settings = list(
      box.rectangle = list(col = 1),
      box.umbrella  = list(col = 1),
      plot.symbol   = list(cex = .5, col = 1)),
       scales = list(x = list(relation = "same"),
                     y = list(relation = "same")))

введите здесь описание изображения

person IRTFM    schedule 23.11.2012