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 :

xyplot et gestion des années pour axe des x


Sujet :

R

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2014
    Messages : 59
    Points : 60
    Points
    60
    Par défaut xyplot et gestion des années pour axe des x
    Bonjour,

    Voici mon problème
    avec le fichier Aranjuez.RData disponible ici https://github.com/oscarperpinan/spa...ee/master/data

    Après avoir fait library("lattice") et library("zoo")

    Je fais xyplot(aranjuez)

    Et là c'est magique en axe des x, il y a les années qui s'affiche. Comment est-ce possible ?

    J'ai fais la même chose avec une de mes séries de données, même format, les dates sous forme de character en row.names.
    Mais malheuresement à la place des années j'ai des nombres de 1 à 1500

    J'ai mis ici les 2 séries de données aranjuez et les miennes "data" : http://zenk.chapelin.fr/data.RData

    Comment avoir l'échelle des x avec les années..... sur ma série

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Data Scientist
    Inscrit en
    Août 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Scientist
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 139
    Points : 316
    Points
    316
    Par défaut
    As-tu regardé la fonction as.Date() qui permet de convertir des données au format Date ?

    Après les dates apparaitront automatiquement dans le plot une fois converties !

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2014
    Messages : 59
    Points : 60
    Points
    60
    Par défaut
    Dans le fichier aranjuez les dates sont aux formats character. Puis c'est juste les années qui apparaîssent sur le graphique, c'est pas des dates de type 25/08/2014 mais 2010 2011 etc

    Est-ce que il y aurait pas une manip avec le package "zoo" ? puisque mes données sont aux formats zoo...


    EDIT:
    Je reformule totalement ma question....

    Comment adapter un data.frame pour l'afficher avec la fonction xyplot ? à la manière de l'objet aranjuez.

    Avec data j'ai fait une tentative mais c'est foireux. Quand on fait row.names(data) les dates s'affichent.... quand on veut afficher data en entier alors les dates ne s'affichent pas.

    Je connais pas le format zoo, je comprends pas ses propriétés et ses utilités

  4. #4
    Membre averti
    Homme Profil pro
    Data Scientist
    Inscrit en
    Août 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Scientist
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 139
    Points : 316
    Points
    316
    Par défaut
    Alors j'ai l'impression que tu poses plusieurs questions qui ne demande pas la même chose mais je vais tâcher de te répondre.

    Tout d'abord je te conseillerai d'utiliser le package xts qui me semble meilleur que zoo car il permet d'avoir des jours manquants dans tes données sans que cela crée des erreurs.

    Ensuite pour ce qui est de la manipulation des dates, il suffit de convertir le vecteur de caractères en Date. as.Date(ton vecteur,...) regarde l'aide dans R c'est simple.

    Pour le plot d'un data.frame qui comprend deux colonnes, première colonne : les dates, deuxième colonne : les données correspondantes, il suffit de faire Les dates s'affichent automatiquement lorsque tu fais cela. Seulement, sur l'axe des abscisses tu n'auras que les années, si tu veux voir les jours, tu peux regarder la fonction axis.Date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    axis(1, as.Date(vecteur qui va bien), format(vecteur qui va bien), "%b %d"), cex.axis = .7)
    Tu peux jouer avec les paramètres de format pour correspondre avec ce que tu veux afficher. Pense à regarder le paramètre graphique las si tu veux changer le sens d'affichage du texte (horizontal, vertical).

    Au final les packages de manipulation de séries temporelles ne sont pas forcément nécessaire pour faire des graphiques. Pour de la manipulation plus poussée (modélisation) par contre il vaut mieux utiliser un de ces packages.

    Et si avec row.names(data) les dates s'affichent c'est qu'elles ne sont pas correctement dans ton data.frame.

    Admettons ton data.frame s'appelle data, je te suggère de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    data <- data.frame(as.Date(row.names(data)), data)
    colnames(data) <- c('Date', 'Valeur')
    plot(data)
    Comme ça tu auras une colonne de Dates et de Valeurs.

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2014
    Messages : 59
    Points : 60
    Points
    60
    Par défaut
    Merci pour la réponse. Mais ça répond pas trop à mon problème.

    Pour les dates, les années me suffisent je veux pas de jour

    Je veux utiliser xyplot au lieu d'un simple plot, car c'est bien présenté, et ça m'apprend le R aussi.


    EDIT


    J'avance....

    J'arrive à bien convertir en zoo avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x <- zoo(data, structure(data$DT_OBSERV, class="Date"))
    Je fais ensuite:
    C'est presque ça..... Certaines variables font des graphiques vierges, je sais pas pourquoi ça me plante. En revanche si je fais un simple plot(x), tout va bien.... Quelqu'un saurait pourquoi ?


    J'ai mis le lien à jour avec le data non foireux, et x (le zoo que je viens de faire): http://zenk.chapelin.fr/data.RData

    REEDIT

    J'ai trouvé où ça cloche voici 2 str()

    POur aranjuez (les données modèles, je veux mettre mes données sont ce même format)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    zoo’ series from 2004-01-01 to 2011-12-31
      Data: num [1:2898, 1:10] 4.04 5.78 5.85 4.41 3.08 ...
     - attr(*, "dimnames")=List of 2
      ..$ : chr [1:2898] "2004-01-01" "2004-01-02" "2004-01-03" "2004-01-04" ...
      ..$ : chr [1:10] "TempAvg" "TempMax" "TempMin" "HumidAvg" ...
      Index:  Date[1:2898], format: "2004-01-01" "2004-01-02" "2004-01-03" "2004-01-04" ...
    et mon x (mes données perso)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    zoo’ series from 2009-12-31 to 2013-12-30
      Data: chr [1:1461, 1:6] "2009-12-31" "2010-01-01" "2010-01-02" ...
     - attr(*, "dimnames")=List of 2
      ..$ : chr [1:1461] "1" "2" "3" "4" ...
      ..$ : chr [1:5] "MINIMALES" "MAXIMALES" "RAYONNEMENT" ...
      Index:  Date[1:1461], format: "2009-12-31" "2010-01-01" "2010-01-02" "2010-01-03" ...
    Pour aranjuez les données sont numériques, pour mes données elles sont considérées comme caractère. Pourquoi ? comment faire pour y remédier ? Comment mettre mes données sous formes numériques

  6. #6
    Membre averti
    Homme Profil pro
    Data Scientist
    Inscrit en
    Août 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Scientist
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 139
    Points : 316
    Points
    316
    Par défaut
    Je n'avais pas vu que tu avais édité ton message.

    Pour commencer, j'ai vu un github où il y a du code de traitement par rapport à la base dont tu te réfères : https://github.com/oscarperpinan/int...b/master/zoo.R
    Peut-être que cela t'aidera à faire la même chose.

    Ensuite, pour convertir en numeric un vecteur, rien de plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    as.numeric(ton_vecteur)
    EDIT :

    Je n'avais pas bien lu tes str, mais il me semble que tes datas correspondent à des dates dans ton cas, ce n'est pas normal si ?

  7. #7
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2014
    Messages : 59
    Points : 60
    Points
    60
    Par défaut
    Merci pour la réponse.

    Finalement j'ai réussi en fait je convertisais en zoo avec ma colonne date, puis je la supprimais après.

    En fesant l'inverse ça fonctionné. J'ai supprimer ma colonne en la metant dans une variable puis je convertis avec l'aide de structure dans la fonction zoo().

    Merci

  8. #8
    Membre averti
    Homme Profil pro
    Data Scientist
    Inscrit en
    Août 2013
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Data Scientist
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2013
    Messages : 139
    Points : 316
    Points
    316
    Par défaut
    Si cela ne te dérange pas, peux-tu mettre ton code te permettant de créer correctement ton objet zoo ?

    Cela permettra à d'autres qui ont le même problème de bien créer l'objet.

    Merci pour les autres

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2014
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2014
    Messages : 59
    Points : 60
    Points
    60
    Par défaut
    Voici le code pour convertir en zoo

    Dans l'exemple data est un data.frame

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x <- zoo(data, structure(date, class="Date"))
    Dans structure, la variable date contient les dates. Dans data, la colonne date ne doit plus exister pour faire cette conversion. Il doit avoir dans le data.frame que des données numériques.

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

Discussions similaires

  1. Logiciel gestion de caisse pour restaurant, des conseils?
    Par Cocoricapi dans le forum Autres Solutions d'entreprise
    Réponses: 4
    Dernier message: 30/10/2014, 11h53
  2. Réponses: 10
    Dernier message: 11/05/2014, 15h19
  3. [XL-2010] Graphique de TCD : Gestion des Heures sur axe des abscisses
    Par Viper7 dans le forum Excel
    Réponses: 5
    Dernier message: 11/12/2013, 18h53
  4. [MCD] Gestion des années pour des statistiques
    Par squale45 dans le forum Schéma
    Réponses: 9
    Dernier message: 26/02/2013, 18h19
  5. Script avec gestion d'erreur pour loader des data depuis un csv
    Par olive_le_malin dans le forum Requêtes
    Réponses: 9
    Dernier message: 10/04/2009, 18h04

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