Probleme avec text() - bis

From: Jean lobry (lobry@biomserv.univ-lyon1.fr)
Date: Sat Nov 06 2004 - 10:19:01 MET

  • Next message: Jean Vidal: "Une question sur les étiquettes dans les graphiques"

    Bonjour,

    je reposte le message ci-apres qui pour une raison inconnue
    a bien ete archive mais non distribue. Depuis, j'ai eu la
    solution, donc je poste et la question et la reponse.

    QUESTION:
    ---------

    j'ai un probleme pour ajouter du texte sur les graphiques produits
    par ade4 sous R. C'est illustre par l'exemple ci-dessous :

    #########

    #
    # Generation d'un pseudo jeu de donnees :
    #

    set.seed(0.1071966) # Magic number for reproducibility
    n <- 100
    data <- runif(2*n)
    dim(data) <- c(n, 2)
    data <- data.frame(data)

    #
    # Definition d'une fonction qui essaye d'ajouter du texte partout :
    #

    show.me.text.visible <- function(length = 50, col = "red")
    {
       xx <- seq(0, 1, length = length)
       for( i in xx )
       {
         for( j in xx )
         {
           text(i, j, "*", col = col)
         }
       }
    }

    #
    # Avec plot() pas de probleme :
    #

    plot(data, xlim = c(0,1), ylim = c(0,1))
    show.me.text.visible() # Ca c'est OK, on peut mettre du texte partout

    #
    # Avec s.value() probleme :
    #

    library(ade4)
    s.value(data, z = rep(1,n), xlim = c(0,1), ylim = c(0,1))
    show.me.text.visible() # Pas OK, on ne peut pas mettre du texte partout

    #########

    C'est embestant parce que c'est souvent en bordure que l'on ajoute
    des annotations.

    REPONSE:
    --------

    C'est un comportement normal puisque qu'en sortie de s.value()
    les parametres graphiques sont restaures pour ne pas perturber
    l'utilisateur.

    Les valeurs par defaut des marges du graphique sont:

    par("mar")
    [1] 5.1 4.1 4.1 2.1

    et donc on ne peut plus fort logiquement ecrire dans les marges.
    Pour pouvoir ecrire partout il faut etendre les marges avant,
    par exemple :

    #########
    s.value(data, z = rep(1,n), xlim = c(0,1), ylim = c(0,1))
    par(mar = c(0.1, 0.1, 0.1, 0.1))
    show.me.text.visible() # OK, on peut mettre du texte partout
    #########

    Zan

    -- 
    Jean R. Lobry            (lobry@biomserv.univ-lyon1.fr)
    Laboratoire BBE-CNRS-UMR-5558, Univ. C. Bernard - LYON I,
    43 Bd 11/11/1918, F-69622 VILLEURBANNE CEDEX, FRANCE
    allo  : +33 472 43 12 87     fax    : +33 472 43 13 88
    http://pbil.univ-lyon1.fr/members/lobry/
    



    This archive was generated by hypermail 2b30 : Sat Nov 06 2004 - 10:21:26 MET