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 :

(débutante), pb xlim


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 (débutante), pb xlim
    Bonjour,

    je travaille avec des séries chronologiques dont je tente de faire des courbes, et j'ai toujours du mal à travailler avec les dates.
    En effet, dans la fonction suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    plot(D[[1]],D[[2]],type="l"
    		,lty=1
                    ,lwd=3
                    ,col="red
                    ,ylim=c(-16,13)
    		,xlim=c("2009-12-15","2011-10-31")
    		,xlab="Date (mm.yyyy)"
                    ,ylab="T°C")
    j'ai un message d'erreur de "xlim incorrect" qui me revient en permanence, et bien sûr je n'arrive donc pas à obtenir le graphe.

    J'ai préalablement défini xlim de cette façon (j'en ai essayé plein d'autres, mais toujours le même message d'erreur):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xlim <- as.POSIXct(strptime(xlim,"%Y. %m",tz="UTC")) 
    xlim <- c(D[2,1],D[686,1])
    Quelqu'un pourrait ainsi me donner quelques conseils sur la façon d'utiliser des dates comme abscisse des graphes?

    Bien cordialement.

  2. #2
    Membre averti
    Femme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Points : 417
    Points
    417
    Par défaut
    Bonjour,
    avez-vous essayé:
    Cela peut vous conduire, par exemple, à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlim <- as.Date(c("2009-12-15", "2011-10-31"))
    Sans savoir ce qu'est votre D, je ne vois rien d'autre...

    Bonne journée

  3. #3
    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 pb pour manipuler séries temporelles
    D est mon dataframe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    > str(D)
    'data.frame':   686 obs. of  16 variables:
     $ dates: POSIXlt, format: "2009-12-15" "2009-12-16" ...
     $ 0.3  : num  -7.88 -9.81 -11.53 -13.16 -14.46 ...
     $ 0.5  : num  -7.41 -8.61 -9.91 -11.29 -12.37 ...
     $ 0.7  : num  -7.22 -7.93 -8.9 -9.99 -10.93 ...
    J'ai essayé différentes façon de formuler mes xlim dans la formule:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    plot(D[[1]],D[[2]],type="l"
    		,lty=1,lwd=3,col=col,ylim=c(-16,13)
    		,xlim=c("2009-12-15","2011-10-31")
    		,xlab="Date (mm.yyyy)",ylab="T°C"
    		,cex.lab=1.2)
    mais aucune ne semble fonctionner, ni le:

    xlim = as.POSIXlt()
    xlim = as.Date()

    soit j'obtiens un message d'erreur soit le plot ne fonctionne pas à cause de la formulation des xlim (si je ne mets pas ce paramètre, la courbe apparait).
    Quelqu'un saurait-il donc comment manipuler cette première colonne de date afin de pouvoir régler mes xlim comme je l'entends?

    En vous remerciant.

    Bien cordialement.

  4. #4
    Membre averti
    Femme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Points : 417
    Points
    417
    Par défaut
    Bonjour,
    avez-vous regardé cette discussion:
    http://stackoverflow.com/questions/5...only-one-value?

    Il me semble que la première réponse avec l’utilisation de axis() pourrait vous aider.

    Bonne journée

    PS: si le post mis en lien n'est pas pertinent, pourriez-vous donner, svp, un extrait de D ainsi que les messages d'erreur?

  5. #5
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Bonjour,

    Autre solution qui pourrait fonctionner en passant par des dates sur ce post

  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
    Alors, tout d'abord merci pour les conseils.
    Pour lilly74: J'ai en effet parfois utilisé la fonction "axis" afin de redessiner mes axes seulement, le problème est que je possède 3 jeux de données (dayNO, dayNE, dayS) que je nomme tour à tour D, et dont voici un extrait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    D <- dayNO
    'data.frame':   686 obs. of  16 variables:
     $ Date  : POSIXlt, format: "2009-12-15" "2009-12-16" ...
     $ X0.30 : num  -7.88 -9.81 -11.53 -13.16 -14.46 ...
     $ X0.50 : num  -7.41 -8.61 -9.91 -11.29 -12.37 ...
     $ X0.70 : num  -7.22 -7.93 -8.9 -9.99 -10.93 ...
     $ X0.90 : num  -7.09 -7.5 -8.21 -9.04 -9.84 ...
    La première colonne (D[[1]]) est donc des dates, et celles-ci sont censées représenter mon axe (x) sur mon plot.
    dayNO et dayS ont exactement la même chronologie, seulement dayNE commence quelques mois plus tard. Or j'aimerais conserver le même axe (x) pour chacun de ces dataframes.
    Créer un nouvel axe avec "axis" ne me permet pas d'ajuster les valeurs de dayNE sur la chronologie de dayNO par exemple, puisque l'axe est dessiné après la courbe. Ainsi, si j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    axis.POSIXct(1,at=seq(dayNO[2,1],dayNO[686,1]
    			,by="month"),format="%m.%y"        			  
    	             ,lwd=0,lwd.ticks=0.5,tcl=0.4,cex.axis=1.2)
    pour tous les plots, dans ce cas, l'axe x ne correspondra pas aux bonnes valeurs de dayNE. Alors comment utiliser la chronologie de dayNO pour mon axe x, et faire un plot avec les valeurs de dayNE en face de cet axe?

    Beniou: j'apprécie le post, mais je ne comprends pas bien comment est réglé le x, et je ne suis pas sûre d'arriver à l'appliquer à mes données. Je vais tout de même essayer de m'y pencher un peu plus. Comment définir des xlim avec dayNO[[1]]:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    O[[1]]
     POSIXlt[1:686], format: "2009-12-15" "2009-12-16" "2009-12-17" "2009-12-18" ..
    ???

    Peut-être avec ces quelques informations supplémentaires pourriez-vous trouver comment définir un xlim selon le format que je souhaite.
    En vous remeciant.

  7. #7
    Membre averti
    Femme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    272
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 272
    Points : 417
    Points
    417
    Par défaut
    Re bonjour,

    juste une question idiote
    Pourquoi ne pas utiliser l'axe commun à dayNO et dayS, et mettre des NA au début de dayNE?

    Cela permettrait de faire correspondre les valeurs sur l'axe des abscisses (sauf si les intervalles ne sont pas les mêmes...)

  8. #8
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Re,

    Je ne sais pas si cela est vraiment ce que tu souhaites faire mais voici un exemple de code que j'ai réussi à faire fonctionner en essayant de recréer ton dataframe sur 4 dates et en essayant de faire un plot sur le mois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    dates <- as.POSIXlt(c("2009-12-15","2009-12-16","2009-12-17","2009-12-18"))
    num <- c(-7.88,-9.81,-11.53,-13.16)
    D <- as.data.frame(dates)
    D$num <- num
    str(D)
    'data.frame':	4 obs. of  2 variables:
     $ dates: POSIXct, format: "2009-12-15" "2009-12-16" ...
     $ num  : num  -7.88 -9.81 -11.53 -13.16
    begin <- as.POSIXct("2009-12-1")
    end <- as.POSIXct("2009-12-31")
    plot(D$dates,D$num,xlim=c(begin,end))
    La seule chose qui diffère est que une fois dans mon dataframe, les dates sont converties en POSIXct d'où le xlim en utilisant as.POSIXct mais peut être que cela fonctionne aussi avec as.POSIXlt ...

  9. #9
    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
    Merci.
    Je vais essayer ces solutions.

  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
    En effet, cela fonctionne lorsque je transforme ma colonne de dates en POSIXct. Je pense que le format POSIXlt est plus délicat à manipuler.

    Merci.

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

Discussions similaires

  1. Débutant XML
    Par viny dans le forum XML/XSL et SOAP
    Réponses: 8
    Dernier message: 25/07/2002, 12h07
  2. [Kylix] Re Re: débutant sur Kylix et Linux.....
    Par Eclypse dans le forum EDI
    Réponses: 2
    Dernier message: 08/06/2002, 22h53
  3. [Kylix] Le débutant en Kylix et Linux....
    Par Eclypse dans le forum EDI
    Réponses: 2
    Dernier message: 08/05/2002, 10h37
  4. Réponses: 3
    Dernier message: 07/05/2002, 16h06
  5. [HyperFile] 2 questions de débutant
    Par khan dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 29/04/2002, 23h18

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