...
[iramuteq] / Rscripts / afc_graph.R
index ca39a35..bda5ce7 100644 (file)
@@ -1,6 +1,6 @@
 #Author: Pierre Ratinaud
 #Copyright (c) 20010-2013 Pierre Ratinaud
-#Lisense: GNU/GPL
+#License: GNU/GPL
 
 
 #fichier genere par IRaMuTeq
@@ -80,7 +80,7 @@ if ( qui == 3 ) {
     if (exists('afctable')) {
         eff <- rowSums(afctable)
     } else {
-        eff <- afctable$rowmass
+        eff <- afc$rowmass
     }
 
     if (!is.null(debsup)) {
@@ -95,9 +95,10 @@ if ( qui == 3 ) {
            cex.par <- eff[debsup:(debet-1)]
         }
         if ( qui == 2 ) {
+           fin <- nrow(table.in)
            table.in <- table.in[debet:nrow(table.in),] 
            tablechi <- tablechi[debet:nrow(tablechi),]
-           cex.par <- eff[debet:nrow(afctable)]
+           cex.par <- eff[debet:fin]
         }
     }
     
@@ -111,9 +112,10 @@ if ( qui == 3 ) {
                 cex.par <- eff
             }
         } else {
+            fin <- nrow(table.in)
             table.in <- table.in[debet:nrow(table.in),]
             tablechi <- tablechi[debet:nrow(tablechi),]
-            cex.par <- eff[debet:nrow(afctable)]
+            cex.par <- eff[debet:fin]
         }
     }
         
@@ -128,7 +130,7 @@ if ( qui == 3 ) {
         table.in <- table.in[row.keep,]
         tablechi <- tablechi[row.keep,]
     } else if (do.select.chi.classe) {
-        row.keep <- select.chi.classe(tablechi, ptbycluster)
+        row.keep <- select.chi.classe(tablechi, ptbycluster, active=FALSE)
         table.in <- table.in[row.keep,]
         tablechi <- tablechi[row.keep,]        
     } else {
@@ -166,20 +168,40 @@ if (is.null(xminmax)) {
         yminmax <- c(min(table.in[,2], na.rm = TRUE) + ((max(cex.par)/10) * min(table.in[,2], na.rm = TRUE)), max(table.in[,2], na.rm = TRUE) + ((max(cex.par)/10) * max(table.in[,2], na.rm = TRUE)))
     }
 
-if (typegraph == 0) {
+if (typegraph == 0 || typegraph == 2) {
 
     open_file_graph(fileout, width = width, height = height, svg = do.svg)
     parcex <- taillecar/10
     par(cex = parcex)
     if (over) {
-    table.in <- table.in[order(cex.par, decreasing = TRUE),]
-    classes <- classes[order(cex.par, decreasing = TRUE)]
-    cex.par <- cex.par[order(cex.par, decreasing = TRUE)]
-    table.in <- stopoverlap(table.in, cex.par=cex.par, xlim = xminmax, ylim = yminmax)
-    classes <- classes[table.in[,4]]
-    cex.par <- cex.par[table.in[,4]]
+        table.in <- table.in[order(cex.par, decreasing = TRUE),]
+        classes <- classes[order(cex.par, decreasing = TRUE)]
+        cex.par <- cex.par[order(cex.par, decreasing = TRUE)]
+        table.out <- stopoverlap(table.in, cex.par=cex.par, xlim = xminmax, ylim = yminmax)
+        table.in <- table.out$toplot
+        notplot <- table.out$notplot
+        if (! is.null(notplot)) {
+            write.csv2(notplot, file = paste(fileout,'_notplotted.csv', sep=''))
+        }    
+        classes <- classes[table.in[,4]]
+        cex.par <- cex.par[table.in[,4]]
+    }
+    if (typegraph == 0) {
+        make_afc_graph(table.in, classes, clnb, xlab, ylab, cex.txt = cex.par, xminmax = xminmax, yminmax = yminmax)
+    } else {
+        dev.off()
+        require(rgexf)
+        nodes.attr <- make.afc.attributes(rownames(table.in), afc_table, afctable, clnb)
+        if (qui != 3) {
+            tokeep <- rownames(chistabletot) %%in%% rownames(table.in)
+            chis <- chistabletot[tokeep,]
+            chis<-chis[rownames(table.in),]
+            nodes.attr$chiclasse <- chis
+        } else {
+            chis <- NULL
+        }
+        afctogexf(fileout, table.in, classes, clnb, cex.par, nodes.attr = nodes.attr)
     }
-    make_afc_graph(table.in, classes, clnb, xlab, ylab, cex.txt = cex.par, xminmax = xminmax, yminmax = yminmax)
 
 } else {
     library(rgl)
@@ -225,7 +247,11 @@ if (typegraph == 0) {
         ReturnVal <- tkmessageBox(title="RGL 3 D",message="Fini !",icon="info",type="ok")
     }
 
-    require(tcltk)
-    ReturnVal <- tkmessageBox(title="RGL 3 D",message="Cliquez pour fermer",icon="info",type="ok")
+    if (typegraph == 1) {
+        require(tcltk)
+        ReturnVal <- tkmessageBox(title="RGL 3 D",message="Cliquez pour fermer",icon="info",type="ok")
+    } else {
+        writeWebGL(dir = fileout, width = width, height= height)
+    }
     rgl.close()
 }