r - 我如何像 JMP 变异图一样制作嵌套的 x 标签,但使用 ggplot2

标签 r ggplot2 boxplot sas-jmp

我喜欢 JMP 变异图。 ( link ) 它是一个强大的工具。

该图的示例有 2 个 x 轴标签,一个用于零件编号,一个用于运算符(operator)。
JMP variability plot 2-level

此处 JMP 变异性图显示了 2 个以上的变量水平。以下按油量、批次大小和爆米花类型划分。找到正确的序列来显示最强的分离可能需要一些工作,但这是一个很好的信息交流工具。
JMP variability plot 2-level

使用 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

这给出的情节是:

enter image description here

如何使 x 轴标签同时指示齿轮和圆柱体?

在 jmp 我得到这个:
enter image description here

最佳答案

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

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

关于r - 我如何像 JMP 变异图一样制作嵌套的 x 标签,但使用 ggplot2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43764586/

相关文章:

R 在轴表达式中导出带有 unicode 的 ggplot 对象时崩溃

python - Pandas:在一个箱线图中为传单设置不同的颜色

r - 多维数组与列表元组列表

r - 多核::应用?

r - ggplot2 geom_smooth,method=lm 的扩展模型

r - geom_boxplot 给出了错误的 mustache

R ggplot2 : boxplots with significance level (more than 2 groups: kruskal. 测试和 wilcox.test 成对)和多个方面

r - 用可移植 R Shiny 吗?

r - 从 R 中的 POSIXct 中提取 2 位数小时

r - 使用 ggplot2 将带有文本的图像作为刻度标签