Как получить две оси X в одном боксплоте - PullRequest
1 голос
/ 03 мая 2019

Я пытаюсь получить две оси X в коробочном графике в ggplot2; один сайт, а другой регион. У меня есть 11 различных сайтов и 3 региона, и я хочу отобразить свои данные таким образом, чтобы регион находился ниже сайта, включая несколько сайтов.

Я пробовал перенос фасетов и сетку, но мне нужен только один график, на котором отображаются все наблюдения.

Мои данные выглядят примерно так:

Region   Site     Value
South   Site1       0.1
South   Site1       0.3
South   Site2      0.24
South   Site2      0.03
South   Site3      0.06
South   Site3      0.14
South   Site3      0.02
Central Site4       0.4
Central Site4      0.32
Central Site4      0.45
Central Site5      0.22
Central Site5      0.27
Central Site5      0.13
Central Site6      0.09
North   Site7      0.55
North   Site7      0.34
North   Site8      0.67
North   Site9      0.89 
North   Site9       0.7
North   Site9      0.51

Соответствующий код выглядит примерно так:

graph <- ggplot(dataframe, aes(x=Site, y=Value)) + geom_boxplot()

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

1 Ответ

0 голосов
/ 03 мая 2019

Использование упорядоченных факторов для группировки уровней в переменных.Я использовал оси Y, потому что уровни Region являются кардинальными.

Best, Тайлер

library(tidyverse)

dat <- tribble(
  ~Region,   ~Site,   ~Value,
  "South",   "Site1",    0.1,
  "South",   "Site1",    0.3,
  "South",   "Site2",   0.24,
  "South",   "Site2",   0.03,
  "South",   "Site3",   0.06,
  "South",   "Site3",   0.14,
  "South",   "Site3",   0.02,
  "Central", "Site4",    0.4,
  "Central", "Site4",   0.32,
  "Central", "Site4",   0.45,
  "Central", "Site5",   0.22,
  "Central", "Site5",   0.27,
  "Central", "Site5",   0.13,
  "Central", "Site6",   0.09,
  "North",   "Site7",   0.55,
  "North",   "Site7",   0.34,
  "North",   "Site8",   0.67,
  "North",   "Site9",   0.89, 
  "North",   "Site9",    0.7,
  "North",   "Site9",   0.51)

dat <- 
  dat %>% 
  mutate(
    Region = factor(x = Region, levels = c("South", "Central", "North"), ordered = T), 
    Site = factor(x = Site) %>% fct_rev())

ggplot(data = dat, mapping = aes(x = Region, y = Value, position = fct_rev(Site), fill = Site)) + 
  geom_boxplot() + 
  coord_flip()

figure.png

...