2014-01-10 5 views
0

Я разрабатываю тип d3 sunburst.Эмиссия маркировки d3 sunburst

Все нормально, это принимает конусную JSON правильно, но, когда я иду, чтобы маркировать путь посмотреть, что происходит:

enter image description here

Код следующее:

var width = 960, 
    height = 700, 
    radius = Math.min(width, height)/2; 

var x = d3.scale.linear() 
    .range([0, 2 * Math.PI]); 

var y = d3.scale.linear() 
    .range([0, radius]); 

var hue = d3.scale.ordinal().range(["#feec76","#aec7e8","#ff00bf","#7f7f7f"]); 

var svg = d3.select("body").append("svg") 
    .attr("width", width) 
    .attr("height", height) 
    .append("g") 
    .attr("transform", "translate(" + width/2 + "," + (height/2 + 10) + ")"); 

var partition = d3.layout.partition() 
    .value(function(d) { return d.size; }); 

var arc = d3.svg.arc() 
    .startAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x))); }) 
    .endAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx))); }) 
    .innerRadius(function(d) { return Math.max(0, y(d.y)); }) 
    .outerRadius(function(d) { return Math.max(0, y(d.y + d.dy)); }); 

d3.json("http://api.printoriente.com/treemap.php", function(error, root) { 
    var g = svg.selectAll("g") 
     .data(partition.nodes(root)) 
    .enter().append("g"); 

    var path = g.append("path") 
    .attr("d", arc) 
    .style("fill", function(d) { return hue((d.children ? d : d.parent).name); }) 
    .on("click", click); 

    var text = g.append("text") 
    .attr("transform", function(d) { return "rotate(" + computeTextRotation(d) + ")"; }) 
    .attr("x", function(d) { return y(d.y); }) 
    .attr("dx", "6") // margin 
    .attr("dy", ".35em") // vertical-align 
    .text(function(d) { return d.name; }); 

И код поворота:

function computeTextRotation(d) { 
    return (x(d.x + d.dx/2) - Math.PI/2)/Math.PI * 180; 
} 

Этот скрипт работает для всех остальных d3, но я должен поместить эти цвета для каждого пути.

Где проблема?

С уважением.

ОБНОВЛЕНО: d3 Санберст с малым размером шрифта:

enter image description here

ОБНОВЛЕНО: Я хочу что-то вроде этого:

enter image description here

ОБНОВЛЕНО: Посмотрите внутренних меток:

enter image description here

+0

Не уверен, что вы говорите. Вы хотите, чтобы текст был окрашен или это пробел в проблеме? –

+0

Проблема между метками - проблема. Я говорю, что этот код работает в других d3 sunbursts, но не в моем. Игнорируйте это, моя проблема связана с ярлыками. – nandophillips

+0

Взгляните на изображение и посмотрите на этикетки T_T – nandophillips

ответ

0

Я не уверен, где вы получили код для вычисления угла, но он, кажется, полностью отключен. Если вы посмотрите на this example, код для вычисления угол (с при прочих равных условиях)

var angle = (d.x + d.dx/2) * 180/Math.PI - 90; 

Замена кода в вашем примере с этим фиксирует углы. Чтобы зафиксировать позиции, вы можете отрегулировать смещениенаклейки, например.

.attr("dx", 50") 

Полный пример here.

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

  • Нет связанных вопросов^_^