2017-12-29 25 views
1

複数の対応解析パッケージの場合、plot関数は複数のプロットを生成します。最初のプロットはactiveで、残りはinactiveです。 knitr html出力にすべてのプロットを1つずつ印刷する方法はありますか?私は以下を試していますが、これはうまくいきません。knitr html出力に 'active'と 'inactive'の両方のプロットを表示

```{r fig.keep='all'} 
library(CAvariants) 

data(asbestos) 
head(asbestos) 
str(asbestos) 
CAvariants(asbestos, catype = "CA", firstaxis = 1, lastaxis = 2) 
CAvariants(asbestos, catype = "DOCA", firstaxis = 1,lastaxis = 2) 
CAvariants(asbestos, catype = "DONSCA",firstaxis=1, lastaxis = 2, ellcomp = FALSE) 

risasbestos<-CAvariants(asbestos, catype = "DOCA", firstaxis=1, lastaxis=2) 
plot(risasbestos, plotype = "biplot", biptype = "row") 

``` 

答えて

0

関数plot.CAvariantには、knitrがうまく処理できないdev.new()への呼び出しがいくつかあります。できることは、次のように手動で機能を編集してこれらの通話を削除することです:

--- 
title: "Test" 
ouptut: html_document 
--- 
```{r fig.keep='all'} 
library(CAvariants) 

data(asbestos) 
head(asbestos) 
str(asbestos) 
plot.CAvariants <- 
    function (x, firstaxis = 1, lastaxis = 2, cex = 0.8, cex.lab = 0.8, 
      prop = 1, plottype = "biplot", biptype = "row", scaleplot = 1, 
      posleg = "topleft", pos = 2, ell = FALSE, Mell = x$Mell, 
      alpha = 0.05, ...) 
{ 
    if ((firstaxis < 1) | (firstaxis > x$r)) 
    stop(paste("incorrect first axis =", firstaxis, "\n\n")) 
    if (lastaxis > x$r) 
    stop(paste("incorrect last axis =", lastaxis, "\n\n")) 
    if (firstaxis >= lastaxis) 
    stop(paste("last axis must be greater than first axis\n\n")) 
    n <- sum(x$Xtable) 
    I <- nrow(x$Xtable) 
    rowgroup <- list(1:x$rows, rep(1, x$rows)) 
    rowgrlab <- list(1, "", "*", "red", "T") 
    colgroup <- list(1:x$cols, rep(1, x$cols)) 
    colgrlab <- list(1, "", "+", "blue", "T") 
    if ((plottype == "Classical") | (plottype == "classical") | 
     (plottype == "classic") | (plottype == "c")) { 
    nthings <- x$cols 
    nvars <- x$rows 
    cord1 <- x$Cprinccoord 
    cord2 <- x$Rprinccoord 
    dmu = diag(x$inertias[, 1]) 
    inertiapc = x$inertias[, 2] 
    dimnames(cord1)[1] <- dimnames(x$Xtable)[2] 
    dimnames(cord2)[1] <- dimnames(x$Xtable)[1] 
    thinggroup <- colgroup 
    thinggrlab <- colgrlab 
    vargroup <- rowgroup 
    vargrlab <- rowgrlab 
    thinglabels <- x$collabels 
    varlabels <- x$rowlabels 
    main = "Classical plot" 
    if ((x$catype == "DONSCA") | (x$catype == "DOCA") | (x$catype == 
      "SOCA") | (x$catype == "SONSCA")) { 
     cat("\n ERROR: NO CLASSICAL PLOT for ordered analysis. ONLY A BIPLOT can be constructed (Please change 'plottype' and specify 'biptype')\n") 
     stop() 
    } 
    } 
    if ((plottype == "Biplot") | (plottype == "biplot") | (plottype == 
     "bip") | (plottype == "b")) { 
    if ((biptype == "rows") | (biptype == "Rows") | (biptype == 
      "row") | (biptype == "r")) { 
     plottype <- "biplot" 
     cord1 <- x$Rprinccoord * scaleplot 
     cord2 <- x$Cstdcoord/scaleplot 
     nthings <- x$rows 
     nvars <- x$cols 
     thinglabels <- x$rowlabels 
     varlabels <- x$collabels 
     thinggroup <- rowgroup 
     thinggrlab <- rowgrlab 
     vargroup <- colgroup 
     vargrlab <- colgrlab 
     main <- "Row Isometric Biplot" 
     inertiapc = x$inertias[, 2] 
     dmu = diag(x$inertias[, 1]) 
     dimnames(cord2)[1] <- dimnames(x$Xtable)[2] 
     dimnames(cord1)[1] <- dimnames(x$Xtable)[1] 
     if ((x$catype == "DONSCA") | (x$catype == "DOCA") | 
      (x$catype == "SOCA") | (x$catype == "SONSCA")) { 
     cord2 <- x$Rprinccoord * scaleplot 
     cord1 <- x$Cstdcoord/scaleplot 
     nthings <- x$cols 
     nvars <- x$rows 
     thinglabels <- x$collabels 
     varlabels <- x$rowlabels 
     thinggroup <- colgroup 
     thinggrlab <- colgrlab 
     vargroup <- rowgroup 
     vargrlab <- rowgrlab 
     inertiapc = x$inertias2[, 2] 
     dmu = diag(x$inertias2[, 1]) 
     dimnames(cord2)[1] <- dimnames(x$Xtable)[1] 
     dimnames(cord1)[1] <- dimnames(x$Xtable)[2] 
     } 
    } 
    else { 
     plottype <- "biplot" 
     if (ell == TRUE) { 
     scaleplot <- 1 
     } 
     if ((x$catype == "CA") | (x$catype == "NSCA")) { 
     cord1 <- x$Cprinccoord * scaleplot 
     cord2 <- x$Rstdcoord/scaleplot 
     nthings <- x$cols 
     nvars <- x$rows 
     thinggroup <- colgroup 
     thinggrlab <- colgrlab 
     vargroup <- rowgroup 
     vargrlab <- rowgrlab 
     thinglabels <- x$collabels 
     varlabels <- x$rowlabels 
     main <- "Column Isometric Biplot" 
     inertiapc = x$inertias[, 2] 
     dmu = diag(x$inertias[, 1]) 
     dimnames(cord1)[1] <- dimnames(x$Xtable)[2] 
     dimnames(cord2)[1] <- dimnames(x$Xtable)[1] 
     } 
     if ((x$catype == "DONSCA") | (x$catype == "DOCA") | 
      (x$catype == "SOCA") | (x$catype == "SONSCA")) { 
     if (ell == TRUE) { 
      scaleplot <- 1 
     } 
     cord2 <- x$Cprinccoord * scaleplot 
     cord1 <- x$Rstdcoord/scaleplot 
     nthings <- x$rows 
     nvars <- x$cols 
     thinggroup <- rowgroup 
     thinggrlab <- rowgrlab 
     vargroup <- colgroup 
     vargrlab <- colgrlab 
     thinglabels <- x$rowlabels 
     varlabels <- x$collabels 
     inertiapc = x$inertias[, 2] 
     dmu = diag(x$inertias[, 1]) 
     dimnames(cord1)[1] <- dimnames(x$Xtable)[1] 
     dimnames(cord2)[1] <- dimnames(x$Xtable)[2] 
     } 
    } 
    } 
    if ((x$catype == "DOCA") | (x$catype == "SOCA") | (x$catype == 
     "SONSCA") | (x$catype == "DONSCA")) { 
    cat("\n Looking at the Trends of rows and columns\n") 
    trendplot(x$mj, (x$Trend), posleg = posleg, main = "Reconstructed rows of the centred column profile", 
     xlab = "ordered scores", prop = prop) 

    trendplot(x$mi, t(x$Trend), posleg = posleg, main = "Reconstructed columns of the centred column profile", 
     xlab = "ordered scores", prop = prop) 
    } 
    picsize1 <- c(range(cord1[, c(firstaxis, lastaxis)], cord2[, 
       c(firstaxis, lastaxis)])/prop) 
    if (picsize1[1] >= picsize1[2]) 
    stop(paste("incorrect axis scale picsize =", picsize1[1], 
      picsize1[2], "\n\n")) 
    if ((x$catype == "DONSCA") || (x$catype == "DOCA")) { 
    plotone(firstaxis, lastaxis, plottype = plottype, things = x$catype, 
     nthings, nvars, cord1, cord2, inertiapc = round(inertiapc, 
      digits = 1), thinggroup, thinggrlab, vargroup, 
     vargrlab, thinglabels, varlabels, picsize = picsize1, 
     cex = cex, cex.lab = cex.lab, type = "b", catype = x$catype, 
     pos = pos) 
    } 
    if ((x$catype == "SOCA") || (x$catype == "SONSCA")) { 
    if (biptype == "row") { 
     type = "b" 
    } 
    else { 
     type = "p" 
    } 
    plotone(firstaxis, lastaxis, plottype = plottype, things = x$catype, 
     nthings, nvars, cord1, cord2, inertiapc = round(inertiapc, 
      digits = 1), thinggroup, thinggrlab, vargroup, 
     vargrlab, thinglabels, varlabels, picsize = picsize1, 
     cex = cex, cex.lab = cex.lab, catype = x$catype, 
     type = type, pos = pos) 
    } 
    if ((x$catype == "CA") || (x$catype == "NSCA")) { 
    plotone(firstaxis, lastaxis, plottype = plottype, things = x$catype, 
     nthings, nvars, cord1, cord2, inertiapc = round(inertiapc, 
      digits = 1), thinggroup, thinggrlab, vargroup, 
     vargrlab, thinglabels, varlabels, picsize = picsize1, 
     cex = cex, cex.lab = cex.lab, type = "p", catype = x$catype, 
     pos = pos) 
    } 
    if (ell == TRUE) { 
    if (((x$catype == "NSCA") | (x$catype == "CA") | (x$catype == 
      "DOCA") | (x$catype == "SOCA") | (x$catype == "SONSCA") | 
      (x$catype == "DONSCA")) & (plottype == "biplot") & 
     (biptype == "row") | (biptype == "r") | (biptype == 
      "rows")) { 
     cordr <- cord2 
     cordc <- cord1 
     cord1 <- cordr 
     cord2 <- cordc 
    } 
    switch(x$catype, CA = caellipse(Xtable = x$Xtable, a1 = firstaxis, 
      a2 = lastaxis, alpha = alpha, M = Mell, cex = cex, 
      cex.lab = cex.lab, prop = prop, Imass = x$Imass, 
      Jmass = x$Jmass, a = x$Rstdcoord, b = x$Cstdcoord, 
      g = cord1, fr = cord2, dmu = dmu, inertiapc = round(inertiapc, 
       digits = 1), plottype = plottype, biptype = biptype, 
      pos = pos, arrow = TRUE, length = 0, graphy = TRUE, 
      ell = TRUE), SOCA = caellipse(Xtable = x$Xtable, 
      a1 = firstaxis, a2 = lastaxis, alpha = alpha, M = Mell, 
      cex = cex, cex.lab = cex.lab, prop = prop, Imass = x$Imass, 
      Jmass = x$Jmass, a = solve(x$Imass^0.5) %*% x$Rstdcoord, 
      b = solve(x$Jmass^0.5) %*% x$Cstdcoord, g = cord2, 
      fr = cord1, dmu = dmu, inertiapc = round(inertiapc, 
       digits = 1), plottype = plottype, biptype = biptype, 
      pos = pos, arrow = FALSE, length = 0, graphy = T, 
      ell = TRUE), DOCA = caellipse(Xtable = x$Xtable, 
      a1 = firstaxis, a2 = lastaxis, alpha = alpha, M = Mell, 
      cex = cex, cex.lab = cex.lab, prop = prop, Imass = x$Imass, 
      Jmass = x$Jmass, a = solve(x$Imass^0.5) %*% x$Rstdcoord, 
      b = solve(x$Jmass^0.5) %*% x$Cstdcoord, g = cord2, 
      fr = cord1, dmu = dmu, inertiapc = round(inertiapc, 
       digits = 1), plottype = plottype, biptype = biptype, 
      pos = pos, arrow = FALSE, length = 0, graphy = T, 
      ell = TRUE), NSCA = nscaellipse(Xtable = x$Xtable, 
      a1 = firstaxis, a2 = lastaxis, alpha = alpha, M = Mell, 
      cex = cex, cex.lab = cex.lab, prop = prop, Imass = x$Imass, 
      Jmass = x$Jmass, a = x$Rstdcoord, b = x$Cstdcoord, 
      g = cord1, fr = cord2, dmu = dmu, tauden = x$tauden, 
      inertiapc = round(inertiapc, digits = 1), plottype = plottype, 
      biptype = biptype, pos = pos, arrow = T, length = 0, 
      graphy = T, ell = TRUE), SONSCA = nscaellipse(Xtable = x$Xtable, 
      a1 = firstaxis, a2 = lastaxis, alpha = alpha, M = Mell, 
      cex = cex, cex.lab = cex.lab, prop = prop, Imass = x$Imass, 
      Jmass = x$Jmass, a = x$Rstdcoord, b = x$Cstdcoord, 
      g = cord2, fr = cord1, dmu = dmu, tauden = x$tauden, 
      inertiapc = round(inertiapc, digits = 1), plottype = plottype, 
      biptype = biptype, pos = pos, arrow = FALSE, length = 0, 
      graphy = T, ell = TRUE), DONSCA = nscaellipse(Xtable = x$Xtable, 
      a1 = firstaxis, a2 = lastaxis, alpha = alpha, M = Mell, 
      cex = cex, cex.lab = cex.lab, prop = prop, Imass = x$Imass, 
      Jmass = x$Jmass, a = x$Rstdcoord, b = x$Cstdcoord, 
      g = cord2, fr = cord1, dmu = dmu, tauden = x$tauden, 
      inertiapc = round(inertiapc, digits = 1), plottype = plottype, 
      biptype = biptype, pos = pos, arrow = FALSE, length = 0, 
      graphy = T, ell = TRUE)) 
    } 
} 
plot(CAvariants(asbestos, catype = "CA", firstaxis = 1, lastaxis = 2)) 
plot(CAvariants(asbestos, catype = "DOCA", firstaxis = 1,lastaxis = 2)) 
plot(CAvariants(asbestos, catype = "DONSCA",firstaxis=1, lastaxis = 2, ellcomp = FALSE)) 

risasbestos<-CAvariants(asbestos, catype = "DOCA", firstaxis=1, lastaxis=2) 
plot(risasbestos, plotype = "biplot", biptype = "row") 

``` 
関連する問題