1
我正在嘗試創建一個Sankey圖,雖然我現在能夠加載我的源代碼,但我遇到了一個小問題 sankey.js ,和我的HTML代碼。在D3插件sankey.js和html代碼之間定義源代碼
當我運行的HTML代碼,我得到一個錯誤信息是這樣的: 遺漏的類型錯誤:無法調用未定義
方法「推」這是錯誤鏈接指向我:
// Populate the sourceLinks and targetLinks for each node.
// Also, if the source and target are not objects, assume they are indices.
function computeNodeLinks() {
nodes.forEach(function(node) {
node.sourceLinks = [];
node.targetLinks = [];
});
links.forEach(function(link) {
var source = link.source,
target = link.target;
if (typeof source === "name") source = link.source = nodes[link.source];
if (typeof target === "name") target = link.target = nodes[link.target];
source.sourceLinks.push(link);
target.targetLinks.push(link);
});
}
這是HTML代碼中的輸入(我的數據來自csv文件)。
//set up graph in same style as original example but empty
graph = {"nodes" : [], "links" : []};
data.forEach(function (d) {
graph.nodes.push({ "name": d.source });
graph.nodes.push({ "name": d.target });
graph.links.push({
"source": d.source,
"target": d.target,
"value": +d.value
});
});
我的問題是:是依靠,我的數據是從JSON文件的假設sankey.js?。如果是這樣,我該如何調整它以便與csv文件兼容?該數據被保存爲下列csv文件:
source,target,value
Barry,Elvis,2
Frodo,Elvis,2
Frodo,Sarah,2
Barry,Alice,2
Elvis,Sarah,2
Elvis,Alice,2
Sarah,Alice,4
好極了!這很好。愚蠢的問題:我是否會以相同的方式定義值(並將其包含在sankey.js腳本中)?還是需要以不同的方式定義? – jducz
我不確定我是否理解你的問題。什麼是「價值」? –
值被定義爲每個節點的大小(下面是它在初始sankey.js腳本中的創建方式): //通過求和相關聯的鏈接來計算每個節點的值(大小)。 \t功能computeNodeValues(){ \t \t nodes.forEach(函數(節點){ \t \t \t node.value = Math.max( \t \t \t \t d3.sum(node.sourceLinks,值), \t \t \t \t d3.sum(node.targetLinks,value) 雖然html腳本在那裏有價值,但它一直告訴我它沒有定義,我知道value是一個不同的實體,因爲它不是一個變量,但是我該如何定義它? – jducz