2012-10-03 2 views
11

Я использую javascript-библиотеку d3.js (http://d3js.org/) для создания визуализации данных холста. Я пытаюсь сделать дугу, но она не принимает параметры данных из моего массива. Кто-нибудь знает, что я делаю неправильно? Это мой код:Создание дуги в d3.js

var chartConfig = { "canvasSize" : 800 } 

var radius = chartConfig.canvasSize/2; 
var pi = Math.PI; 

var vis = d3.select("#chart").append("svg") 
    .attr("width", radius * 2) 
    .attr("height", radius * 2) 
    .append("g") 
    .attr("transform", "translate(" + radius + "," + radius + ")"); 

var arcData = [ 
    {aS: 0, aE: 45,rI:radius/2,rO:radius} 
]; 
var arc = vis.selectAll("arc").data(arcData).enter().append("arc"); 
arc.attr("innerRadius", function(d){d.rI}).attr("outerRadius",function(d){d.rO}).attr("class","arc"); 

function degToRad(degrees){ 
    return degrees * (pi/180); 
} 

enter image description here

ответ

23

Там нет arc элемента в SVG, вам необходимо определить соответствующий элемент пути. К счастью, для этого используется вспомогательная функция d3.

var arc = d3.svg.arc() 
    .innerRadius(50) 
    .outerRadius(70) 
    .startAngle(45 * (Math.PI/180)) //converting from degs to radians 
    .endAngle(3) //just radians 

vis.append("path") 
    .attr("d", arc) 
    .attr("transform", "translate(200,200)") 

Рабочий пример: http://jsfiddle.net/g0r9n090/;

+0

Это работает, чтобы вернуть правильное значение из массива arcData, но на самом деле оно не наводит дугу на экран. Чего не хватает? Я прикрепил скриншот дерева DOM - узел дуги есть, но ничего не появляется. – mheavers

+0

Простите, я только что увидел непосредственную проблему, что вы не возвращали значения. Полностью пропущена часть, которую вы пытались создать элемент 'arc'. Я обновил свой ответ на примере создания дуги. – Bill

+4

FYI: d3.svg.arc() изменился на d3.arc() – luQ

Смежные вопросы