2013-04-25 4 views
3

Я изучаю библиотеку NVD3.js. Меня поражает, как быстро в нем можно создавать вещи.Диаграмма диаграммы пончика - добавить название - NVd3.js

Но кажется, что иногда сложно изменить график. В этом случае Я хотел бы добавить заголовок к моей диаграмме.

Другая вещь, Я хотел бы добавить дополнительные данные в tool-tip. Таким образом, на hover, он также будет включать примечание в мои данные.

образец данных:

var data = [ 
{ 
    key: "Loans", 
    y: 52.24 
    note: "Expect greatest value" 
}]; 

Это код, который я играю с:

nv.addGraph(function() { 

var width = 500, 
    height = 500; 

var chart = nv.models.pieChart() 
    .x(function(d) { return d.key; }) 
    .values(function(d) { return d; }) 
    .color(d3.scale.category10().range()) 
    .width(width) 
    .height(height) 
    .donut(true); 

chart.pie 
    .startAngle(function(d) { return d.startAngle/2 -Math.PI/2; }) 
    .endAngle(function(d) { return d.endAngle/2 -Math.PI/2 ;}); 


    d3.select("#chart") 
     //.datum(historicalBarChart) 
     .datum([data]) 
    .transition().duration(1200) 
     .attr('width', width) 
     .attr('height', height) 
     .call(chart); 

return chart; 
}); 

Donut-Pie Chart example


Update: Исходный код для всплывающей подсказки расположенный в пределах src->models->pieChart.js:

tooltip = function(key, y, e, graph) { 
    return '<h3>' + key + '</h3>' + 
      '<p> Confidence: ' + y + '%</p>' 
    } 

Я пробовал переопределить это своей собственной функцией. Но либо получить ошибки, либо без изменений.

Обновление названия: Обычно я использую следующий код (или что-то подобное) для заголовков.

svg.append("text") 
    .attr("x", (width/2)) 
    .attr("y", 0 - (margin.top/2)) 
    .attr("text-anchor", "middle") 
    .style("font-size", "16px") 
    .style("text-decoration", "underline") 
    .text("Awesome Title"); 

Но, конечно, это недействительно в NVD3. Я не знаю, какая функция используется для указания заголовка.

ответ

5

Я думаю, что вы ищете диаграмму. tooltipContent() JSFiddle: http://jsbin.com/idosop/7/edit

 var tp = function(key, y, e, graph) { 
      console.log(key, e, y); 
      return '<h3>' + key + '</h3>' + 
        '<p>!!' + y + '!!</p>' + 
       '<p>Likes: ' + e.point.likes + '</p>'; 
     }; 
     chart.tooltipContent(tp); 
+0

Очень приятно. Это решает! Но что делает 'point' часть' e.point.likes'? – EnigmaRM

+0

Если у вас есть дополнительная информация (например, в дополнение к стоимости ау) в наборе данных, как мы делаем здесь: данные = [{ ключ: «Кредиты», у: 52,24 примечание: «Ожидать наибольшее значение» }, ключ: «Учетные записи», y: 300.24 примечание: «Meh» }, ...] Каждый элемент массива данных передается в подсказку назад как e.points, и вы можете получить остальную часть ваши данные, связанные с этой точкой, с этого объекта. – WolfgangCodes

+0

Делает смысл. У вас есть ссылка на Документы, где это объясняется? (хорошо, если вы этого не сделаете). В общем, я еще не нашел отличного источника для документов. – EnigmaRM

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