2017-11-18 189 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)与外部数据不同。没有必要,但有助于我的理解。谢谢! –

相关问题