2013-07-08 4 views
5

ich verwende das d3-Beispiel von http://www.jasondavies.com/wordcloud/#http%3A%2F%2Fen.wikipedia.org%2Fwiki%2F%7Bword%7D=cloud, um meine eigene Wortwolke zu erstellen.d3 Wortwolken - zu viele Überlappungen vorkommen

Alles, was ich zu tun versuche, ist, ein Farbattribut zu den Wörtern basierend auf der Eigenschaft der Objekte hinzuzufügen, die die Wörter bezeichnen.

zum Beispiel gibt es 4 Wörter - USA, Indien, UK und Deutschland - ich verwende Schwellenwerte, um die Farbe der Wörter zu setzen - sagen wir, das ist mehr wie eine Farbe basierend auf der Bevölkerungsdichte einstellen.

Dies beeinflusst jedoch in keiner Weise die Größe der Schriftart - was Landmasse des Landes bedeuten könnte.

Mein Problem ist, dass die Wörter alle einander überlappen.

Ich frage mich, was ich falsch machen könnte - siehe diesen Code - meine 'zeichnen' Funktion. was könnte ich hier falsch machen?

draw: function(countries) { 
     var cctrplt = {BuOrPuRd: { 
      4: ["#9ebcda","#e32636","#08306b", "#ffbf00"] 
     }}; 
     var fillthr = 
      d3.scale.threshold() 
      .domain([2, 5, 10]) 
      .range(cctrplt.BuOrPuRd[4]); 
     d3.select("#ddTagCloudContentRoot").append("svg") 
      .attr("width", width) 
      .attr("height", height) 
      .append("g") 
      .attr("transform", "translate(300,300)") 
      .selectAll("text") 
      .data(countries) 
      .enter().append("text") 
      .style("font-size", function(d) { return (d.size) + "px"; }) 
      .style("font-family", "Impact") 
      .style("fill", function(k,i) { var ccode = colours_list[k.text]; return fillthr(ccode); }) 
      .attr("text-anchor", "middle") 
      .attr("transform", function(d) { 
       return "translate(" + [d.x, d.y] + ")"; 
      }) 
      .text(function(d) { return d.text; }); 
    } 

Wenn es einen anderen Code teilen muss ich - lassen Sie mich wissen.

danke.

Antwort

5

Die Lösung gefunden. Ich habe den Funktionsaufruf rotate() nicht verwendet, weil Text horizontal platziert werden soll. Ich dachte, es würde helfen, den Anruf ganz zu ignorieren.

scheint nicht der Fall zu sein. also füge ich rotieren (0) hinzu und das war's. Jetzt bekomme ich eine gut aussehende Wortwolke.

TIPP: Ich benutze stroke: schwarz gegen Textstile und das ergibt eine ordentliche Darstellung.

+0

Oh mein Gott, du hast mir gerade so viel Zeit gerettet. Habe alle Ups. –

+0

Ich habe gedreht (0), hilft nicht. – dresh