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

JavaScript Discussion :

Masquer les points d'un graphe / D3.JS


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant L3 MIAGE
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Etudiant L3 MIAGE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 26
    Points
    26
    Par défaut Masquer les points d'un graphe / D3.JS
    Bonjour à tous ,

    dans le cadre de mon stage je dois faire de la visualisation de donnée à partir d'un fichier .CSV
    Jusqu'ici pas de soucis, je génère un graphe à l'aide de la bibliothèque D3.JS à partir de ce .CSV

    Là où ça se gatte c'est quand je dois faire en sorte de diminuer l'opacité de mes points (qui sont plus ou moins gros en fonction d'une des colonne de mon tableau ) lorsque je passe ma souris sur un de ces points :

    En synthèse je souhaite que lorsque je passe ma souris sur un point de mon graphe, les autres s'effacent ou presque.

    Auriez vous des pistes parce que je bloque .. je sais pas si je dois faire une fonction PHP, ou gérer cet événement directement dans mon JS .. en bref j'ai besoin de vos lumières

    Merci d'avance

  2. #2
    Membre actif Avatar de zaza576
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2013
    Messages
    175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2013
    Messages : 175
    Points : 275
    Points
    275
    Par défaut
    Avec Javascript et CSS, tu peux gérer des interactions sur les points de ton graphe pour manipuler leur opacité.

    Par exemple :
    onHover(pointX5){
    parcourir tous les points du graphe sauf le point courant pointX5{
    appliquer une propriété CSS pour diminuer l'opacité de moitié tant que la souris n'est pas sortie du focus du point actuel
    }
    }

    Modif : Pourquoi parles tu de PHP ? Tout se fait côté client. Ton graphe est affiché dans ton navigateur. Pas besoin de demander à ton serveur de calculer ce qui peut être fait par le client vu que ça interagit directement sur le DOM de ta page !

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Etudiant L3 MIAGE
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Etudiant L3 MIAGE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Le problème c'est que je ne sais pas comment identifier chaque point de mon graphe, car je génère le graphe à partir d'un tableau php qui lui même est généré à partir de mon fichier CSV.
    Si je pouvais identifier chaque points de mon graphe, le problème serait presque résolu.
    Je vais voir ce que je trouve du côté CSS et JS ( j'ai déjà testé quelques choses avec .on("mouseover",fonction) sur mon svg.selectAll("circle") mais cela ne me donne rien ..)

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 657
    Points
    44 657
    Par défaut
    Bonjour,
    Le problème c'est que je ne sais pas comment identifier chaque point de mon graphe, car je génère le graphe à partir d'un tableau php qui lui même est généré à partir de mon fichier CSV.
    donc à un moment ou à un autre tu as accès à tous tes points.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Etudiant L3 MIAGE
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Etudiant L3 MIAGE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Oui, la première colonne de mon tableau regroupe les identifiants, mais je ne sais pas comment utiliser cette colonne. Dois-je faire une fonction JS ? Si oui, où l'utiliser ensuite ..
    Je vous avoue que ce problème me perd un peut dans mes raisonnements

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Etudiant L3 MIAGE
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Etudiant L3 MIAGE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Problème résolu j'ai finalement trouvé une solution :

    Lors de l'appel de la méthode

    svg.selectAll("circle")
    .attr(...)
    .attr(...)
    ...
    //il faut rajouter un gestionnaire d'évenement mouseover sur l'élément sur lequel nous voulons interagir
    .on("mouseover",fonctionMouseOver);


    Dans notre fonctionMouseOver il faut invoquer une méthode sur tous les éléments de la collection comme ça on évite de passer par une boucle :

    d3.selectAll("circle).style("opacity",0.1)
    puis modifier l'opacité de l'élément courrant :
    d3.select(this).style("opacity",1)

    et faire une fonction mouseleave pour remettre tous les paramètres d'origine

    Si cela n'est pas très clair il ne faut pas hésiter à m'écrire.

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

Discussions similaires

  1. [Débutant] Comment "encadrer" les points d'un graphe qui appartiennent à une matrice ?
    Par linpro.lalaland dans le forum MATLAB
    Réponses: 8
    Dernier message: 11/07/2014, 15h31
  2. [Flex4] Mettre des labels sur les points d'un graph
    Par Swarovsky dans le forum MXML
    Réponses: 0
    Dernier message: 29/10/2012, 23h12
  3. [XL-2003] Obtenir les coordonnées d'un point dans un graph en cliquant dessus
    Par triaguae dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/12/2010, 11h09
  4. Réponses: 0
    Dernier message: 15/10/2009, 14h10
  5. Placer les points contenus dans un tableau sur un graphe
    Par SandyF dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/09/2009, 17h40

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