微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用ggpubr从数据框中同时按行和列对绘图进行分面?

如何解决如何使用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",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","high"))

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

我想在此面板分离后绘制此数据:

enter image description here

我尝试了很多,但只能提供此代码来制作情节:

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

解决方法

这是实现您的目标的一种潜在方式(您只需在构面中切换以获得与图表中相同的列和线):

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"),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" ))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。