如何使用JMP变异图制作嵌套x标签,但使用ggplot2

Eng*_*ica 5 r ggplot2 boxplot sas-jmp

我喜欢JMP可变性图。(链接)这是一个强大的工具。

该示例的示例具有2个x轴标签,一个用于部件号,一个用于操作员。 JMP变异图2级

在这里,JMP变异图显示了两个以上级别的变量。以下按油量,批量和爆米花类型划分。找到正确的序列以显示最强的分离可能需要花费一些工作,但这是信息交流的绝佳工具。
JMP变异图2级

使用ggplot2库,如何用R使用多层x标签?

我能找到的最好的是这个(linklink),它根据圆柱数分开,但是不做x轴标签。

我的示例代码是这样的:

#reproducible
set.seed(2372064)

#data (I'm used to reading my own, not using built-in)
data(mtcars)
attach(mtcars)

#impose factors as factors
fact_idx <- c(2,8:11)
for(i in fact_idx){
     mtcars[,i] <- as.factor(mtcars[,i])
}

#boxplot
p <- ggplot(mtcars, aes(gear, mpg, fill=cyl)) + 
     geom_boxplot(notch = TRUE)  
p
Run Code Online (Sandbox Code Playgroud)

这给出的图是:

在此处输入图片说明

如何使x轴标签同时显示齿轮和气缸?

在jmp中我得到这个:
在此处输入图片说明

小智 7

您可以使用R-package VCA,它带有varPlot函数,实现类似于JMP的可变性图。帮助中提供了多个示例。您的示例如下所示:

library(VCA)
dat <- mtcars[order(mtcars$cyl, mtcars$gear),]

# default
varPlot(mpg~cyl/gear, dat)    
# nicely formatted
varPlot(mpg~cyl/gear, dat, 
        BG=list(var="gear", col=paste0("gray", c(90,80,70)), 
                col.table=T),
        VLine=list(var="cyl"), Mean=NULL,
        MeanLine=list(var=c("cyl", "gear"), col=c("blue", "orange"),
                      lwd=c(2,2)),
        Points=list(pch=16, cex=1))
Run Code Online (Sandbox Code Playgroud)