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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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 : 957
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 émérite
    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 : 32
    Localisation : Canada

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

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    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 expérimenté
    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
    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 : 933
Taille : 17,1 Ko

  4. #4
    Membre confirmé
    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
    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 expérimenté
    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
    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 confirmé
    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
    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 émérite
    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 : 32
    Localisation : Canada

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

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    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.

  8. #8
    Membre confirmé
    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
    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