2011-09-05 17 views
11

d3 ma a demo of a Force-Directed Graph Layout.Czy układ sterowania siłą d3-js obsługuje obraz jako węzeł?

Zamiast kółek chcę, aby wszystkie węzły na wykresie były obrazami.

więc zmieniłem

.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); 

do

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

Ale nie widzę żadnych zdjęć. Co ja robię źle?

Odpowiedz

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"); 

Oto przykład użycia obrazu jako węzła: http://bl.ocks.org/950642

+1

Wykonaj pan wie, jak zrobić obraz rect jako obraz okręgu wewnątrz węzła okręgu? Twój podany przykład pokaże okrąg i prostokątny obraz w środku. Dzięki. – derek

+0

@derek, co powiesz na: border-radius: 100%; styl css? – andreybavt

+0

border-radius nie działa na svg: image, ale jest nadzieja: http://stackoverflow.com/questions/7430580/setting-rounded-corners-for-svgimage – fredw