Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
合并重叠组以包含在R中的小提琴图/方框图中_R_Ggplot2_Grouping_Violin Plot_Ggpubr - Fatal编程技术网

合并重叠组以包含在R中的小提琴图/方框图中

合并重叠组以包含在R中的小提琴图/方框图中,r,ggplot2,grouping,violin-plot,ggpubr,R,Ggplot2,Grouping,Violin Plot,Ggpubr,我正在使用iris数据集处理以下代码。我想画一个小提琴图,只包括刚毛类物种,并对数据分组进行一些复杂的重叠组合 具体地说,在x轴上,我想首先将连续的萼片长度数据分成几组:A组=萼片长度5.2 然后,我想在x轴上绘制四个小提琴/盒子,单个/重叠组:“B”、“A+C”、“D”、“A+C+D”。y轴只是“花瓣长度” 我还包括代码,以显示每个小提琴的样本大小(n) 如果有任何建议,我将不胜感激。多谢各位 library(dplyr) library(ggplot2) library(ggpubr) #

我正在使用iris数据集处理以下代码。我想画一个小提琴图,只包括刚毛类物种,并对数据分组进行一些复杂的重叠组合

具体地说,在x轴上,我想首先将连续的萼片长度数据分成几组:A组=萼片长度<4.7,B组=萼片长度4.7-5,C组=萼片长度5-5.2,D组=萼片长度>5.2

然后,我想在x轴上绘制四个小提琴/盒子,单个/重叠组:“B”、“A+C”、“D”、“A+C+D”。y轴只是“花瓣长度”

我还包括代码,以显示每个小提琴的样本大小(n)

如果有任何建议,我将不胜感激。多谢各位

library(dplyr)
library(ggplot2)
library(ggpubr)
# Define order of violins on x-axis.
order <- c("B", "AC", "D", "ACD")
# Function to display sample size (n) for each violin.
give.n <- function(x){return(c(y = min(Petal.Length), label = length(x)))}
iris %>% 
  filter(Species == "setosa") %>% 
  mutate(sub_a = case_when( Sepal.Length < 4.7~"A",
                        Sepal.Length < 5~ "B",
                        Sepal.Length < 5.2~ "C",
                        TRUE~"D")) %>% 
  mutate(collapsed = c((ifelse(sub_a %in% c("A", "C"), "AC", sub_a)), (ifelse(sub_a %in% c("AC", "D"), "ACD", sub_a)))) %>% 
  ggviolin(iris[iris$Species == "setosa", ], x=collapsed, y=Petal.Length) + scale_x_discrete(limits=order) + stat_summary(fun.data = give.n, geom = "text")
库(dplyr)
图书馆(GG2)
图书馆(ggpubr)
#定义小提琴在x轴上的顺序。
订单%
当(萼片长度<4.7~“a”,
萼片长度<5~“B”,
萼片长度<5.2~“C”,
真~“D”))%>%
突变(塌陷=c((如果其他(在%c(“a”、“c”),“AC”,在%c(“AC”、“D”),“ACD”,在%c(“AC”、“D”),“ACD”,在%a”)))>%
GG小提琴(iris[iris$Species==“setosa”,x=collapsed,y=Petal.Length)+缩放x离散(限制=顺序)+统计摘要(fun.data=give.n,geom=“text”)
编辑

预期结果见下文。请注意,每把小提琴下面的数字都是准确的。图像的其余部分只是预期结果的一个示例


我看不出如何作为一个单链来实现这一点,但这里有一个蛮力解决方案,它使用
cut
然后
bind\u rows

setosa <- iris %>% filter(Species == "setosa")  %>% 
  mutate(group = cut(Sepal.Length, breaks = c(0, 4.7, 5, 5.2, Inf), labels = c("A", "B", "C", "D"), right = FALSE))

bind_rows(B = setosa %>% filter(group == "B"),
          AC =  setosa %>% filter(group %in% c("A", "C")),
          D =  setosa %>% filter(group == "D"),
          ACD = setosa %>% filter(group %in% c("A", "C", "D")),
          .id = "group2"
          ) %>% 
  mutate(group2 = factor(group2, levels = c("B", "AC", "D", "ACD"))) %>% 
  ggplot(aes(x = group2, y = Petal.Length)) + 
  geom_violin()
setosa%过滤器(物种==“setosa”)%>%
变异(组=切割(萼片长度,裂片=c(0,4.7,5,5.2,Inf),标签=c(“A”,“B”,“c”,“D”),右=假))
绑定行(B=setosa%>%filter(group==“B”),
AC=setosa%>%过滤器(组%c(“A”、“c”)),
D=setosa%>%过滤器(组==“D”),
ACD=setosa%>%过滤器(组%c(“A”、“c”、“D”)中的%s),
.id=“组2”
) %>% 
突变(第2组=因子(第2组,水平=c(“B”、“AC”、“D”、“ACD”)))%>%
ggplot(aes(x=group2,y=Petal.Length))+
geom_小提琴()

您能添加当前绘图并在Paint/Word/PPT中绘制预期输出吗?@Tung-谢谢您的提问。请看上面的编辑。谢谢你,Richard。正是我所希望的!