2016-04-25 1 views
0

Je voudrais définir une couleur spécifique sur le cercle de graphique à bulles en termes de variable. Je peux changer toute la bulle en rouge par exemple mais pas chaque bulle. Ma condition est un attribut de d et elle est définie par le contenu de mon JSON.Définir une couleur spécifique à un graphique à bulles

node.append("circle") 
     .attr("r", function(d) { return d.size; }) 
     .style("fill", "red"); // all my bubble are red but the condition doesn't works 
     /* 
     if (condition) { 
      .style("fill", "red"); 
     } else { 
      .style("fill","green"); 
     } 
     */ 

Ce projet est le Plunker: https://plnkr.co/edit/07RZFQoBrBz2xWxmiCl0?p=preview Merci.

+0

la plunkr vous avez déjà donné change la couleur des cercles en fonction de leur taille avec son style rappel => le style (« remplir », fonction (d) {couleur de retour (d. .Taille); }); – echonax

+0

S'il vous plaît, expliquez quelle est la condition pour remplir les cercles. –

+0

Je met à jour le plunker, vous pouvez vérifier maintenant. La condition est le contenu de l'attribut size 'node.append (" circle ") .attr (" r ", fonction (d) {return d.size;}) .style (" fill "," red ") if (d.size == 1) { // .style ("fill", "vert") } else if (dsize == 2) { // .style ("remplir", "orange" } else if (dsize == 3)) { // .style ("fill", "blue") } ' – Anonyme

Répondre

0

Ceci est la syntaxe correcte:

.style("fill", function(d){ 
       if (d.size <= 20){ 
       return "green" 
       } else if (d.size <= 40){ 
       return "orange" 
       } else if (d.size <= 70){ 
       return "blue" 
       } else { 
       return "red" 
       } 
      }); 

j'ai écrit <= juste pour obtenir des intervalles, mais vous pouvez changer cela comme vous le souhaitez. Et en utilisant else if vous pouvez définir n'importe quel nombre de conditions que vous voulez.

Voici le Plunker: https://plnkr.co/edit/Q2reQnEFTcL58xNseYXl?p=preview

0

La raison pour laquelle votre code de condition de travail est-il briser l'enchaînement, comme:

d3.select(selector) 
.attr() 
.style() 
.append() 

Vous pouvez utiliser l'état tout en garder enchaînant par ceci:

.style("fill", condition ? "red" : "green") 

Si la condition est plus de deux Pour la fonctionnalité et la lisibilité, nous créons une fonction.

function color(condition) { 
    switch (expression) { 
    case redCondition: 
     return "red" 
     break; 
    case blueCondition: 
     return "blue" 
     break; 
    default: 
     return "green" 
    } 
} 

.style("fill", color(condition))  
+0

Comment puis-je faire si je veux avoir plus de deux conditions? – Anonyme

+0

Salut, @ afeffifari-1957, réponse mise à jour. –