2

Я разрабатываю приложение, используя диаграмму Sankey диаграммы Google Chart, и я успешно создал образец диаграммы Sankey в веб-приложении. Но меня не устраивает макет, и я ищу в Интернете и натолкнулся на плагин d3.js для Sankey Diagram. Это выглядит очень хорошо, и я протестировал приложение примера кода с here.d3.js sankey diagram - используя массив multi dime как узлы

В коде, он вызывает внешний файл в формате JSON, чтобы использовать его в качестве узлов:

d3.json("sankey-formatted.json", function(error, graph) { ... }); 

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

//rows is the multidimensional array 
//i got this from the example on Google Charts 
data.addRows(rows); 

Многомерный массив представляет собой набор объектов, которые поступают из вызова AJAX.

Как использовать этот массив для диаграммы Санки? Могу ли я это сделать без вызова внешнего файла?

+0

Итак, у вас уже есть данные, и вы просто хотите передать их плагину, не выполняя 'd3.json()'? – Oleg

ответ

1

Мне удалось ответить на свой вопрос (глупый я). Я буду размещать это для будущего использования.

Если у вас уже есть переменная, содержащая данные (например, массив), используйте ее напрямую.

В моем случае исходный код:

d3.json("sankey-formatted.json", function(error, graph) { 

    //sankey is an object, as well as the graph 
    sankey 
     .nodes(graph.nodes) 
     .links(graph.links) 
     .layout(32); 

// ... other codes 
}); 

Изменить как

// this time, nodes and links are the variables 
// that holds the arrays to be used by the chart 
// remove the encapsulation of d3.json 
sankey 
    .nodes(nodes) 
    .links(links) 
    .layout(32); 

// ... other codes 

Надеется, что это поможет будущему виду.