簡體   English   中英

通過應用函數生成多個ggplot箱圖

[英]Produce multiple ggplot boxplots through apply functions

我想知道是否有可能使用apply函數生成一組類似於這個嵌套循環組合產生的箱圖。

這可能是不可能/必要的,但我認為應該是可能的,我只是無法繞過如何做到這一點。

我需要能夠繪制這個以查看100個因子相對於一個變量( mtcars$mpg )的比較

head(mtcars)

for (i in 8:11) {
    for (j in 8:11) {

        if (i != j) {

            title = paste(names(mtcars)[i], names(mtcars)[j], 
                sep = "/")

            p <- ggplot(mtcars, aes(interaction(mtcars[,i], mtcars[, j]), mpg, fill = factor(mtcars[,i]))) + geom_boxplot(alpha = I(0.7))
            p <- p + ggtitle(title) + scale_fill_hue()


        } else {

            title = paste(names(mtcars)[i])

            p <- ggplot(mtcars, aes(factor(mtcars[,i]), mpg, fill = factor(mtcars[, i]))) + geom_boxplot(alpha = I(0.7))
            p <- p + ggtitle(title) + scale_fill_hue()


        }

        print(p)
    }
} 

將if塊放在函數中:

plotGG <- function(i,j) 
  {
  if (i != j) { ... } else{ ... }
 }

然后叫它:

mapply(plotGG,8:11,8:11)

它有效。

由於ggplot的范圍問題,您的代碼將無法ggplot 但是你可以在這里查看解決方案: aes中的局部變量

編輯:您可以根據需要完成包裝:

multiPlotGG <- function(l1,l2) {
 mapply(plotGG,rep(l1,each = length(l2)),rep(l2,length(l1)))
}
multiPlotGG(8:11,8:11)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM