kplot ACOM

From: Charline Laurent (Charline.Laurent@ifremer.fr)
Date: Tue Sep 07 2004 - 14:55:11 MEST

  • Next message: Stephane DRAY: "Re: question sur R"

      Bonjour,

    La représentation donnée par la fonction "kplot" dans l'ACOM est très
    intéressante, mais quelquefois un peu difficile à lire.

    Il pourrait être intéressant de l'améliorer en permettant de représenter
    les flèches en couleur, dans le cas où nos points peuvent être regroupés en
    quelques classes.
    Dans mon exemple, les données que je représente dans le kplot sont des
    espèces, qui peuvent être regroupées en 3 classes : marines, continentales,
    estuariennes. Il est plus agréable et plus lisible au premier abord,
    d'obtenir un graphe représentant par exemple les flèches des espèces
    marines en rouge, des espèces continentales en noir et des espèces
    estuariennes en vert.

    J'ai réussi à arriver à mes fins en rajoutant quelques lignes et un
    paramètre ("clascol") à la fonction "s.match" :

    smatch<-function (df1xy, df2xy, xax = 1, yax = 2, pch = 20, cpoint = 1,
         label = row.names(df1xy), clabel = 1, edge = TRUE, xlim = NULL,
         ylim = NULL, grid = TRUE, addaxes = TRUE, cgrid = 1, include.origin =
    TRUE,
         origin = c(0, 0), sub = "", csub = 1.25, possub = "bottomleft",
         pixmap = NULL, contour = NULL, area = NULL, add.plot = FALSE,
    clascol=NULL)
    {
    .....
    coo <- scatterutil.base(dfxy = rbind.data.frame(df1xy, df2xy),
             xax = xax, yax = yax, xlim = xlim, ylim = ylim, grid = grid,
             addaxes = addaxes, cgrid = cgrid, include.origin = include.origin,
             origin = origin, sub = sub, csub = csub, possub = possub,
             pixmap = pixmap, contour = contour, area = area, add.plot = add.plot)
         for (i in 1:n) {
             col<-clascol[i]
             arrow1(coo$x[i], coo$y[i], coo$x[i + n], coo$y[i + n],
                 lty = 1, edge = edge, col=col)
             if (cpoint > 0)
             points(coo$x[i], coo$y[i], pch = pch, cex = par("cex") *
                 cpoint, col=col)
          }
         box()
    }

    L'option "clascol" (pour couleur des classes) est un vecteur numérique de
    longueur égale au nombre de points à représenter. Il indique pour chaque
    ligne (point) la couleur que l'on souhaite.

    exemple de vecteur "clascol" :

    > clascol
      [1] "2" "1" "3" "2" "2" "1" "2" "2" "1" "2" "2" "2" "2" "2" "1" "2" "1" "1"
    [19] "2" "1" "2" "2" "2" "2" "2" "2" "2" "2" "2" "2" "2" "3" "3" "1" "2" "2"
    [37] "2" "2" "1" "2" "2" "2" "1" "2" "2" "2" "2" "2" "2" "2" "3" "2" "2" "2"
    [55] "2" "2" "2" "1" "2" "1" "2" "3" "3" "3" "2" "2" "2"

    J'obtiens avec ce vecteur des flèches noires (1), rouges (2) et vertes (3).

    Un exemple de représentation en couleur est donnée en pièce jointe.

    Il peut également être utile de pouvoir représenter les flèches, non plus
    avec des couleurs différentes, mais avec des types différents (ligne
    pleine, pointillés, tirets...), pour des sorties en noir et blanc.

    Charline LAURENT



    double_typo_couleur_juin.gif



    This archive was generated by hypermail 2b30 : Tue Sep 07 2004 - 14:58:34 MEST