Ich habe eine Reihe von Daten, die ich mit d3.js visualisieren. Ich repräsentiereDatenPunkte in Form von Blasen, wobei die Konfiguration für Blasen ist wie folgt:Convert d3.js Blasen in zwangsweise/Schwerkraft basierte Layout
var dot = svg.selectAll("g")
.data(data)
.enter()
.append("g");
dot.append("circle")
.attr("class", "dot")
.attr("cx", function(d) { return xp(x(d)); })
.attr("cy", function(d) { return yp(y(d)); })
.style("fill", function(d) { return colorp(color(d)); })
.attr("r", function(d) { return radiusp(radius(d)*2000000); });
dot.append("text")
.attr("x", function(d) { return xp(x(d)); })
.attr("y", function(d) { return yp(y(d)); })
.text(function(d) { return d.name; })
Wo xp, yp, colorp und radiusp wie folgt definiert sind:
var xp = d3.scale.log().domain([300, 1e5]).range([0, width]),
yp = d3.scale.linear().domain([10, 85]).range([height, 0]),
radiusp = d3.scale.sqrt().domain([0, 5e8]).range([0, 40]),
colorp = d3.scale.category10();
An diesem Punkt Die Blasen werden an ihren Positionen als statisch angezeigt (wobei die Position durch xp und yp definiert ist), während die Größe der Blase im Wesentlichen von Radiusp und die Farbe von colorp abhängt.
Im Moment bin ich ihnen zu zeigen, genau wie dieses Beispiel: http://bl.ocks.org/mbostock/4063269
Was ich brauche, ist sie in dieser Form angezeigt werden: http://jsfiddle.net/andycooper/PcjUR/1/
Das heißt: Sie sollten unter Verwendung der Schwerkraftfunktion gepackt werden, etwas Ladung haben, können gezogen werden und sich gegenseitig abstoßen. Ich kann sehen, dass es einen Weg durch d3.layout.force() gibt, aber nicht wirklich in der Lage das zu integrieren .. Ich werde wirklich dankbar sein, wenn Sie mir den richtigen Weg oder ein funktionierendes Beispiel oder sogar einen Hinweis vorschlagen können. Vielen Dank.
noch keine Antworten? – user2480542
Was ist das Problem, das Sie bei der Integration in 'd3.layout.force()' – user568109
konfrontiert Das Problem ist, dass d3.layout.force() definiert cx- und cy-Koordinaten automatisch und ich bin nicht in der Lage, genau herauszufinden, wie ich es angehen und implementieren kann. Auch wenn ich xp- und yp-Variablen entferne, die die Positionierung von Blasen erzwingen, kann ich das nicht erreichen. Auf der ersten Seite habe ich versucht, das erzwungene Layout für diese Blasen zu implementieren, aber das war nicht erfolgreich. : -/ – user2480542