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 :

Graphe a 3 variables sur R?


Sujet :

R

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2012
    Messages : 12
    Points : 5
    Points
    5
    Par défaut Graphe a 3 variables sur R?
    Bonjour,

    J'ai un large fichier de données avec 3 variables par donnée:
    x = position
    y= longueur
    z = nombre

    Voila un exemple:
    x y z
    12 40 8
    13 40 8
    14 40 8
    15 40 5
    16 24 9

    J'aimerais representer un genre de heatmap ou de surface 3D avec pour abscisse x, pour ordonnée y et chaque point(x, y) avec une couleur ou une hauteur proportionnelle a la valeur z correspondante.
    J'ai essayé levelplot mais on dirait qu'il ne prend pas en considération la valeur z de mon fichier.
    J'ai aussi essayé persp3D et filled.contour mais a chaque fois j'ai cette erreur :
    Error in contour.default(x, y, z) : increasing 'x' and 'y' values expected

    Est-ce qu'avec le genre de données que j'ai, il est possible de créer une surface 3D ou un heatmap comme ci-dessous?

    Nom : 6K2U4.png
Affichages : 2050
Taille : 20,2 Ko

    Nom : N0pnv.png
Affichages : 1485
Taille : 53,3 Ko

    Je vous remercie d'avance pour vos conseils.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2012
    Messages : 12
    Points : 5
    Points
    5
    Par défaut
    J'ai avancé et j'ai réussi a produire un wireframe. Cela se rapproche de ce que je veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    wireframe(z~x*y, data=dfr,
              scales=list(arrows=FALSE), zlab=list(zlab, rot=90),
              xlab=list(xlab, rot=24), ylab=list(ylab, rot=-37),
              col.regions=colr(100),  drape=TRUE,
              screen=list(z=40, x=-70))
    Nom : Wireframe.PNG
Affichages : 1215
Taille : 26,9 Ko

    Est-ce que quelqu'un saurait comment lisser les courbes et se débarrasser des arretes du cube a part celles correspondant au x, y, z?

  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,
    Oui c'est possible de supprimer les cadres : utiliser les paramètres de lattice. Quant au lissage, il est faisable directement dans les arguments de wireframe ; l'interpolation améliorera encore plus le résultat du lissage (par exemple, voir la bibliothèque akima).

    Code R : 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
    invisible(sapply(
        c("akima", "fields", "lattice"),
        function(xxx) {
            library(xxx, character.only = TRUE)
        }
    ))
     
    interpolate <- function(component) {
        return(seq(
            from = min(component),
            to = max(component),
            length.out = 2 * length(component)
        ))
    }
     
    #smp1 : jeu de données ; liste à 3 composantes (x, y, z)
     
    smp1Smooth <- with(smp1, interp(x = x, y = y, z = z ,
                                    xo = interpolate(x), yo = interpolate(y))
    )
     
    image(smp1Smooth)  #bibliothèque "base"
     
    image.plot(smp1Smooth) #bibliothèque "fields"
     
    wireframe(z ~ x * y, data = smp1, shade = TRUE, drape = TRUE, colorkey = TRUE,
              pretty = TRUE, par.settings = list(
                  box.3d = list(col=NA),
                  axis.line = list(col = "transparent")
              )
    )

    Nom : smp1Smooth_small-1.png
Affichages : 1262
Taille : 15,5 KoNom : smp1Smooth_small-2.png
Affichages : 1254
Taille : 44,7 KoNom : smp1Smooth-3.png
Affichages : 1224
Taille : 15,8 Ko

Discussions similaires

  1. [XL-2007] Creer un graph avec plage de données variables sur VBA
    Par fares paris dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/07/2013, 16h49
  2. BOXPLOT: 2 variables sur le même graph
    Par PLM04 dans le forum ODS et reporting
    Réponses: 3
    Dernier message: 16/07/2012, 15h47
  3. Variable sur plusieurs ligne
    Par krfa1 dans le forum ASP
    Réponses: 5
    Dernier message: 20/04/2006, 11h26
  4. ajouter une variable sur un control
    Par gijy dans le forum MFC
    Réponses: 15
    Dernier message: 21/03/2006, 19h18
  5. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 12h23

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