2017-11-18 115 views
0

我想使用字符串的JavaScript數組中的數據產生一個D3圖形,顯示時間戳記的時間序列(t),接收( rx)和發送(tx)計數器。數組中的每個成員都是一個對應於一行時間的字符串,rx,tx(是的,帶有逗號分隔符)。我不想使用基於d3.request的方法。我已經使用服務器端lua代碼從服務器讀取文件,並使用jslines.push(字符串)將數據放入頁面。我怎樣才能解析csv數據從一個字符串的JavaScript數組中使用d3圖

109 // Show results so far 
110 for (i=0; i < jslines.length; i++) { 
111  console.log(i + ": " + jslines[i]); 
112 } 

上面的部分給我的信心數據是我所描述的。現在我只是試圖從「行」中取出3個數據值中的每一個,然後重複。我不在乎他們在這一點上仍然是字符串。數字後面。

我的參考資料是:https://github.com/d3/d3-dsv/blob/master/README.md#csvParseRows但我明顯誤解了所需的工作。

114 var dataArray = d3.csvParseRows(jslines, function(d, i) { 
115 return { 
116  time: d[0], 
117  rx: d[1], 
118  tx: d[2] 
119 }; 
120 }); 

將感謝(種類)的建議和/或使用D3解析的工作示例和d3被本身不是從遠程(或本地)文件中提取準備數據。我能找到的大多數例子都是要求d3將文件內容傳輸到客戶端,我相信。

謝謝...艾倫

+1

請分享'jslines'數組(不是全部,只是一些元素就夠了)。請記住,'d3.csvParseRows'將解析一個字符串,而不是一個數組。另外,請詳細解釋*什麼*在代碼中不起作用......你是否按照你想要的方式獲得了'dataArray'?或者這裏的問題是如何使用'dataArray'? –

+0

jslines數組的每個成員都包含一個字符串,其內容如下:「1234567,100,110」,已經用空格修飾,值之間用單個逗號。所有的值都應該是非負的。用我最初粘貼的代碼,dataArray出來nil。 –

+0

那麼,沒有換行符?你不能在'd3.csvParseRows'中使用它:函數怎麼知道它正在處理哪一行? –

回答

1

如果你已經有了字符串,你可以把它分解如下:

var a = "1,2,3" 
var b = a.split(",") 
console.log(b[1]) 

具體而言,你的榜樣,您可以提取數據是這樣的:

var data = jslines.map(function(l) { 
    data = l.split(","); 
    return({time: data[0], rx: data[1], tx: data[2]}); 
}) 

然後根據得到的對象數組構造你的d3圖。

+0

謝謝埃裏克。我遵循你的例子,除了我把函數內的變量「data」改爲「tempdata」(在兩個縮進行上),以保證函數內的數據(現在是tempdata)與外部數據不同。沒有必要,但有助於我的理解。謝謝! –

相關問題