IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

Utilisation fonction polygon()


Sujet :

R

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut Utilisation fonction polygon()
    Bonjour,

    cette discussion fait suite à une première discussion ouverte il y a quelques jours mais qui n'a pas trouvé réponse

    je trace une courbe dont l'axe est en format POSIXct et correspond à chaque jour d'une année civile, entre le 01/01 et 31/12, et dont l'axe y sont des valeurs numériques oscillant entre 0 et 0.6 au cours du temps.

    J'aimerai que l'espace entre la courbe et l'axe x soit rempli de couleur lorsque y est > 0.

    Je suppose qu'il faut utiliser la fonction polygon, mais visiblement je m'y prends mal car ça ne rempli pas là où j'aimerais.

    Si je fais:

    ça me rempli au-dessus de la courbe Nom : Rplot-polygon-test1.png
Affichages : 889
Taille : 6,3 Ko

    Comment faire pour que l'aplat de couleur soit situé sous la courbe?

    Merci d'avance pour vos conseils.

  2. #2
    Membre éprouvé
    Avatar de Haache
    Homme Profil pro
    Doctorant & Ingénieur Statiaticien Economiste
    Inscrit en
    Mars 2014
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant & Ingénieur Statiaticien Economiste

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    Points : 1 009
    Points
    1 009
    Billets dans le blog
    8
    Par défaut
    Bonjour Florence Magnin
    J'ai bien compris le problème. J'ai eu la même difficulté sur Tikz mais j'ai finalement trouvé une issue. Je pense bien qu'elle peut marcher aussi ici. Quoique c'est une proposition. D'autres peuvent avoir une meilleure solution.

    Le problème est que R relie ton premier point au dernier pour créer un espace fermé dont il colore l'intérieur. Ce n'est pas qu'il colore le dessus. Non!
    Pour contourner le problème essaie juste de créer deux points fictifs. Un point au 01/01 ayant pour ordonnée 0 et un point au 31/12 ayant pour ordonnée 0. Ce faisant l'espace fermé qui sera créé va correspondre à ce que tu veux et l'intérieur sera colorié.

    Je ne sais pas si je me fais comprendre mais ça marche.
    • Faites un tour sur mon siteweb professionnel www.aristideelysee.16mb.com Des codes dans la section "media et code" pouvant vous aider que vous pouvez aussi partager sur les réseaux sociaux.
    • Visiter mon blog en cliquant ici! Des techniques, astuces et macros pour l'analyse quantitative.

  3. #3
    Membre actif
    Homme Profil pro
    Bioinformaticien
    Inscrit en
    Octobre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Bioinformaticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 126
    Points : 296
    Points
    296
    Par défaut
    Bonjour,
    Au risque de paraître avoir développé un tropisme pro-ggplot2, je recommande de carrément délaisser le système traditionnel de graphiques, i.e. tout le package graphics dont la fonction polygon fait partie, sauf pour certains cas spéciaux.. À la place, préférer le système de treillis, c.-à.-d package grid et ses dérivés, dont ggplot2. Voir help("graphics-package") et help("grid-package", package = "grid").
    Au premier abord, cela pourrait paraître comme une aberration étant donné que graphics est non seulement installé et attaché par défaut mais aussi constitue sans doute le système le plus documenté & enseigné. Cette digression mise à part, voici une proposition de solution.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    library(ggplot2)
    library(gridExtra)
     
    tmp <- as.POSIXct(strptime(paste("2015", month.name, "01", sep = "-"), "%Y-%B-%d"))
     
    eg <- data.frame(stretch = tmp, values = runif(length(tmp), .0, .6))
     
    drawing <- ggplot(data = eg, aes(x = stretch, y = values)) +
        geom_line() +
        scale_x_datetime()
     
    hatched_drawing <- ggplot(data = eg, aes(x = stretch, y = values)) +
        geom_area(fill = "darkorange") +
        scale_x_datetime()
     
    print(drawing)
    print(hatched_drawing)
    grid.arrange(drawing, hatched_drawing, ncol = 2L)
    Nom : shading.png
Affichages : 876
Taille : 17,1 Ko

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    Bonjour et merci pour vos réponses!

    Pour répondre à Haache, en effet je m'étais mal exprimée mais j'avais à peu près compris mon problème. J'avais essayé en créant en vecteur de valeurs 0 pour les 365 jours de l'année, mais sans succès. Je vais donc essayé votre solution.

    En attendant j'ai essayé la solution de juliatheric qui paraît très intéressante mais j'ai quelques difficultées.
    La première est que j'obtiens une erreur que j'ai du mal à cerner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Error in rename(x, .base_to_ggplot, warn_missing = FALSE) : 
      could not find function "revalue"
    Pouvez-vous m'éclairer?

    Merci d'avance!

  5. #5
    Membre actif
    Homme Profil pro
    Bioinformaticien
    Inscrit en
    Octobre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Bioinformaticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 126
    Points : 296
    Points
    296
    Par défaut
    Veuillez indiquer les sorties de ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sessionInfo()
     
    packageVersion("ggplot2")

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    Voilà les sorties, en espérant que ça vous aide pour que je puisse comprendre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    > sessionInfo()
    R version 2.14.2 (2012-02-29)
    Platform: x86_64-pc-mingw32/x64 (64-bit)
     
    locale:
    [1] LC_COLLATE=French_France.1252  LC_CTYPE=French_France.1252   
    [3] LC_MONETARY=French_France.1252 LC_NUMERIC=C                  
    [5] LC_TIME=French_France.1252    
     
    attached base packages:
    [1] grid      stats     graphics  grDevices utils     datasets  methods   base     
     
    other attached packages:
    [1] gridExtra_0.9.1 ggplot2_0.9.3.1
     
    loaded via a namespace (and not attached):
     [1] colorspace_1.2-1   dichromat_2.0-0    digest_0.6.3       gtable_0.1.2      
     [5] labeling_0.1       MASS_7.3-17        munsell_0.4        plyr_1.7.1        
     [9] proto_0.3-10       RColorBrewer_1.0-5 reshape2_1.2.2     scales_0.2.3      
    [13] stringr_0.6.2      tools_2.14.2      
    > packageVersion("ggplot2")
    [1] ‘0.9.3.1’
    >

  7. #7
    Membre actif
    Homme Profil pro
    Bioinformaticien
    Inscrit en
    Octobre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Bioinformaticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 126
    Points : 296
    Points
    296
    Par défaut
    Alors, le problème rapporté dans le message #4 est dû à une version très ancienne de ggplot2.
    • La version sur votre machine : 0.9.3.1
    • La dernière version en date : 2.0.0


    Cela dit en passant, la version de R lui-même est très ancienne. Si vous n'avez pas des raisons très contraignantes qui vous font utiliser R v.2.14.2, passez à la dernière version en date (3.2.3) en réinstallant R.

    Mais dans le cas de l'exemple du message #3, vous pouvez garder l'ancienne version de R et mettre à jour seulement ggplot2. En effet, les dépendances de ce dernier sont définies ainsi :
    Depends:            R (>= 2.14)
    Donc la version 2.14.2 devrait le faire à condition que les packages que ggplot2 importent soient eux aussi compatibles avec elle. Voici comment faire les mises à jour de tous les packages obsolètes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    # choisir le site miroir à partir duquel faire les MàJ ;
    # le miroir le plus à jour est le "0-Cloud" mais il n'est pas nécessairement le plus rapide du point de vue débit
    chooseCRANmirror()
     
    # la MàJ à proprement parler
    upgrade(packageStatus(), ask = FALSE)
    Après cela, revérifier si packageVersion("ggplot2") vous donne une version à jour ; si c'est le cas, l'erreur que vous obteniez devrait disparaître.

  8. #8
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    Bonsoir,

    ça avance, mais j'ai toujours quelques difficultés.
    Pour commencer, j'ai mis à jour ma version de R, il était temps! Et je n'obtiens plus les mêmes erreurs.
    J'ai essayé d'adapter vos propositions avec ggplot2 à mes données, mais étant donné que j'accumulais les messages d'erreur, j'ai essayé avec vos propositions telles quelles et voici les erreurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    > library(ggplot2)
    > library(gridExtra)
    > tmp <- as.POSIXct(strptime(paste("2015", month.name, "01", sep = "-"), "%Y-%B-%d"))
    > 
    > eg <- data.frame(stretch = tmp, values = runif(length(tmp), .0, .6))
    > 
    > drawing <- ggplot(data = eg, aes(x = stretch, y = values)) +
    +     geom_line() +
    +     scale_x_datetime()
    > 
    > hatched_drawing <- ggplot(data = eg, aes(x = stretch, y = values)) +
    +     geom_area(fill = "darkorange") +
    +     scale_x_datetime()
    > 
    > print(drawing)
    Error in seq.int(0, to0 - from, by) : 'to' cannot be NA, NaN or infinite
    > print(hatched_drawing)
    Error in get(name, envir = asNamespace(pkg), inherits = FALSE) : 
      object 'rversion' not found
    Graphics error: Error in get(name, envir = asNamespace(pkg), inherits = FALSE) : 
      object 'rversion' not found
     
    Error in matrix(value, n, p) : 
      'data' must be of a vector type, was 'NULL'
    In addition: Warning message:
    Removed 12 rows containing missing values (position_stack). 
    > grid.arrange(drawing, hatched_drawing, ncol = 2L)
    Error in get(name, envir = asNamespace(pkg), inherits = FALSE) : 
      object 'rversion' not found
    Graphics error: Error in get(name, envir = asNamespace(pkg), inherits = FALSE) : 
      object 'rversion' not found
     
    Error in seq.int(0, to0 - from, by) : 'to' cannot be NA, NaN or infinite
    N'y a-t'il pas encore des problèmes de compatibilité (entre autres)?

    Merci d'avance, et encore une fois pour votre aide, si toutefois vous savez qu'elle peut être la cause de telles erreurs!

    J'attends votre réponse avec impatience, en espérant qu'on trouvera la solution!

  9. #9
    Membre actif
    Homme Profil pro
    Bioinformaticien
    Inscrit en
    Octobre 2008
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Bioinformaticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 126
    Points : 296
    Points
    296
    Par défaut
    Bonjour,
    Cette fois-ci, le problème vient du périphérique ou pilote de dessin ("graphic device" dans le jargon de R). Il est très probable que vous n'utilisez R ni sur la ligne de commandes ni sur l'interface installée avec R sous Windows (d'après Platform: x86_64-pc-mingw32/x64 (64-bit), vous êtes sur un Windows 64 bits). Il me semble alors que vous utilisez RStudio. Deux solutions alternatives :
    1. réessayer avec les outils natifs de R, i.e. l'interface installée avec ou la ligne de commande ;
    2. vérifier que vous avez une version à jour de RStudio, sa dernière version en date étant 0.99.489 : si ce n'est pas le cas, le mettre à jour lui aussi et réessayer.

  10. #10
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    Bonsoir,


    merci pour votre aide et les efforts pour essayer de résoudre le problème.
    J'ai également installé la dernière version de Rstudio, mais que ce soit dans Rstudio ou les outils natifs de R (dernière version installée), les messages d'erreur sont les mêmes (légèrement différents des premiers).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    > print(drawing)
    Error in seq.int(0, to0 - from, by) : 'to' cannot be NA, NaN or infinite
    > print(hatched_drawing)
    Error in matrix(value, n, p) : 
      'data' must be of a vector type, was 'NULL'
    In addition: Warning message:
    Removed 12 rows containing missing values (position_stack). 
    > grid.arrange(drawing, hatched_drawing, ncol = 2L)
    Error in seq.int(0, to0 - from, by) : 'to' cannot be NA, NaN or infinite
    Une idée de l'origine du problème?

    Merci!

  11. #11
    Membre éprouvé
    Avatar de Haache
    Homme Profil pro
    Doctorant & Ingénieur Statiaticien Economiste
    Inscrit en
    Mars 2014
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant & Ingénieur Statiaticien Economiste

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    Points : 1 009
    Points
    1 009
    Billets dans le blog
    8
    Par défaut
    Citation Envoyé par Florence Magnin Voir le message
    Bonjour et merci pour vos réponses!

    Pour répondre à Haache, en effet je m'étais mal exprimée mais j'avais à peu près compris mon pb. J'avais essayé en créant en vecteur de valeurs 0 pour els 365 jours de l'année, mais sans succès. Je vais donc essayé votre solution.

    En attendant j'ai essayé la solution de juliatheric qui paraît très intéressante mais j'ai quelques difficultées.
    La première est que j'obtiens une erreur que j'ai du mal à cerner:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Error in rename(x, .base_to_ggplot, warn_missing = FALSE) : 
      could not find function "revalue"
    Pouvez-vous m'éclairer?

    Merci d'avance!
    Non ce n'est pas la même chose. Je serai plus compréhensif. Je ne dis pas e créer un vecteur de 0.
    Bref deux variables x et y comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     x=1:20; y=rnorm(20,mean=6)
    Je vais d'abord créer l'espace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plot(x,y,xlim=c(1,max(x)),ylim=c(0,max(y)),pch=" ")
    Je vais donc tracer le polygone comme tu le souhaite
    Je vais juste compléter un point de coordonnées (1,0) au début et un autre de coordonnées (max(x),0).
    Voici le code que je propose

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    polygon(c(1,x,max(x)),c(0,y,0),col="cyan")
    Je pense que ça marche, voici l'image
    Images attachées Images attachées  
    • Faites un tour sur mon siteweb professionnel www.aristideelysee.16mb.com Des codes dans la section "media et code" pouvant vous aider que vous pouvez aussi partager sur les réseaux sociaux.
    • Visiter mon blog en cliquant ici! Des techniques, astuces et macros pour l'analyse quantitative.

  12. #12
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2011
    Messages : 84
    Points : 51
    Points
    51
    Par défaut
    Bonjour,

    merci pour les plus amples explications. N'utilisant R que très occasionnellement et n'ayant aucun bagage en programmation, je n'avais visiblement pas bien saisi comment utiliser la fonction polygone.

    L’affaire est désormais résolue.

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb de blancs dans utilisation fonction FtpFindFirstFile
    Par AlvinTheMaker dans le forum MFC
    Réponses: 2
    Dernier message: 06/04/2005, 12h33
  2. Réponses: 6
    Dernier message: 24/02/2005, 09h44
  3. [GIMP] [Script-FU] Utilisation fonction gimp-curves-spline
    Par narmataru dans le forum Autres langages
    Réponses: 1
    Dernier message: 09/02/2005, 17h25
  4. [Débutant] Aide utilisation fonctions :(
    Par trakiss dans le forum Débuter
    Réponses: 10
    Dernier message: 27/08/2004, 15h59
  5. Utilisation fonction définie dans un .Dll
    Par jeab. dans le forum Windows
    Réponses: 5
    Dernier message: 23/03/2004, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo