Как гранить график по строкам и столбцам одновременно из фрейма данных с помощью ggpubr?

Я не эксперт по R, и у меня небольшие проблемы с построением данных.

Некоторый контекст: был проведен эксперимент с использованием 2 коагулянтов при 3 разных скоростях и 3 разных концентрациях твердых частиц, чтобы увидеть поведение 3 параметров. Результаты эксперимента были записаны в следующем кадре данных:

Coagulant <- c(rep("Chem_1", times = 9),
               rep("Chem_2", times = 9))

Velocity <- rep(c(rep("low", times = 3),
              rep("mid", times = 3),
              rep("high", times = 3)),
              times = 2)

Solids <- rep(c(0,50,100), times = 6)

Parameter_1 <- runif(n = 18,
                     min = 70,
                     max = 100)

Parameter_2 <- runif(n = 18,
                     min = 90,
                     max = 100)

Parameter_3 <- runif(n = 18,
                     min = 0,
                     max = 100)

Ex.data.frame <- data.frame(Coagulant,
                            Velocity,
                            Solids, 
                            Parameter_1,
                            Parameter_2,
                            Parameter_3)

Ex.data.frame$Coagulant <- factor(Ex.data.frame$Coagulant,
                                    levels = c("Chem_1", "Chem_2"),
                                    labels = c("Chem_1", "Chem_2"))

Ex.data.frame$Velocity <- factor(Ex.data.frame$Velocity,
                             levels = c("low", "mid", "high"),
                             labels = c("low", "mid", "high"))

Ex.data.frame$Solids <- factor(Ex.data.frame$Solids,
                                  levels = c(0, 50, 100),
                                  labels = c(0, 50, 100))

Я хотел бы построить эти данные после разделения панелей:

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

Я много пробовал, но могу предоставить только этот код, чтобы сделать сюжет:

require(ggpubr)

    ggbarplot(data = Ex.data.frame,
              y = "Parameter_1", #I'd like to use for all parameters (same units)
              fill = "Solids",
              position = position_dodge2(),
              facet.by = c("Coagulant", "??")) #Facet by the parameters columns from the data frame

person Daniel Valencia C.    schedule 22.02.2021    source источник


Ответы (1)


Вот потенциальный путь к вашей цели (вам просто нужно переключиться на фасет, чтобы иметь те же столбцы и линии, что и на вашем графике):

library(dplyr)
library(magrittr)
d <-rbind(Ex.data.frame[1:4] %>% rename(Parameter = Parameter_1) %>% mutate(param = "Parameter_1"), 
      Ex.data.frame[c(1:3,5)] %>% rename(Parameter = Parameter_2) %>% mutate(param = "Parameter_2"), 
      Ex.data.frame[c(1:3,6)]  %>% rename(Parameter = Parameter_3) %>% mutate(param = "Parameter_3")
      )

ggbarplot(data = d,
          y = c("Parameter" ), 
          fill = "Solids",
          position = position_dodge2(),
          facet.by = c( "param", "Coagulant" ))

person MrSmithGoesToWashington    schedule 22.02.2021