2011-09-05 26 views
11

d3 tiene a demo of a Force-Directed Graph Layout.¿La disposición dirigida por la fuerza de d3-js admite la imagen como nodo?

En lugar de círculos, quiero que todos los nodos en el gráfico sean imágenes.

así, he cambiado

.append("svg:circle") 
     .attr("class", "node") 
     .attr("cx", function(d) { return d.x; }) 
     .attr("cy", function(d) { return d.y; }) 
     .attr("r", 5) 
     .style("fill", function(d) { return fill(d.group); }) 
     .call(force.drag); 

a

.append("xhtml:img") 
    .attr("src", "http://a577.phobos.apple.com/us/r1000/081/Purple/12/61/13/mzi.lgqdzwfu.png") 
    .call(force.drag); 

Pero no puedo ver ninguna imagen. ¿Qué estoy haciendo mal?

Respuesta

18
node.append("svg:image") 
    .attr("class", "circle") 
    .attr("xlink:href", "https://d3nwyuy0nl342s.cloudfront.net/images/icons/public.png") 
    .attr("x", "-8px") 
    .attr("y", "-8px") 
    .attr("width", "16px") 
    .attr("height", "16px"); 

Aquí se muestra un ejemplo de la utilización de una imagen como el nodo: http://bl.ocks.org/950642

+1

¿Por casualidad saber cómo hacer que la imagen rect una imagen círculo dentro de un círculo como nodo? Su ejemplo dado mostrará un círculo y una imagen rect dentro de él. Gracias. – derek

+0

@derek, ¿qué hay de border-radius: 100%; estilo css? – andreybavt

+0

border-radius no funciona en svg: image pero hay esperanza: http://stackoverflow.com/questions/7430580/setting-rounded-corners-for-svgimage – fredw

Cuestiones relacionadas