Javascript 将d3.csv方法转换为d3.csv.parse方法

Javascript 将d3.csv方法转换为d3.csv.parse方法,javascript,parsing,csv,d3.js,tsv,Javascript,Parsing,Csv,D3.js,Tsv,我只需要画一个d3柱状图,其中包含从sql查询中检索到的数据,所以我没有tsv或csv文件,而是csv格式的数据字符串。我知道我可以使用d3.csv.parse方法,但不知何故,我不知道如何将csv条形图的示例代码使用文件中的数据转换为字符串变量中包含的数据的csv.parse方法 以下是csv文件的示例代码: d3.csv("data.csv", type, function(error, data) { x.domain(data.map(function(d) { return d.

我只需要画一个d3柱状图,其中包含从sql查询中检索到的数据,所以我没有tsv或csv文件,而是csv格式的数据字符串。我知道我可以使用d3.csv.parse方法,但不知何故,我不知道如何将csv条形图的示例代码使用文件中的数据转换为字符串变量中包含的数据的csv.parse方法

以下是csv文件的示例代码:

d3.csv("data.csv", type, function(error, data) {
  x.domain(data.map(function(d) {  return d.letter; }));
  y.domain([0, d3.max(data, function(d) { return d.frequency; })]);
以下是用于测试目的的示例数据和不起作用的代码

var bardata="letter,frequency\nA,0.89\nB,0.71\nC,0.45";
d3.csv.parse(bardata,type, function(data) { 
    x.domain(data.map(function(d) { return d.letter; })); 
    y.domain([0, d3.max(data, function(d) { return d.frequency; })]);
显然,我不能简单地用包含文件内容的var替换文件。最好的方法是什么


非常感谢

d3.csv.parse
只接受两个参数—一个包含csv数据的字符串和一个可用于构造数据数组的访问器函数。请注意
d3.csv
d3.tsv
之间的区别,两者都接受回调函数作为参数

letters = d3.csv.parse(bardata, function(d) {
    return {
        letter:d.letter, 
        frequency:+d.frequency
    };
});
这将解析
bardata
中的CSV数据,并将值作为数组放入
字母中。实际上,访问器函数是可选的。以下内容也可以做同样的事情:

letters = d3.csv.parse(bardata);
一旦有了数组,就可以像往常一样构建条形图。请参阅下面的代码片段

var bardata=“字母,频率\nA,0.89\nB,0.71\nC,0.45”;
var margin={顶部:20,右侧:30,底部:30,左侧:40},
宽度=960-margin.left-margin.right,
高度=500-margin.top-margin.bottom;
var x=d3.scale.ordinal()
.rangeRoundBands([0,宽度],.1,.2);
变量y=d3.scale.linear()
.范围([高度,0]);
var svg=d3.选择(“正文”).追加(“svg”)
.attr(“宽度”,宽度+边距。左侧+边距。右侧)
.attr(“高度”,高度+边距。顶部+边距。底部)
.附加(“g”)
.attr(“转换”、“平移”(+margin.left+)、“+margin.top+”);
字母=d3.csv.parse(bardata,函数(d){
返回{
信:d.letter,
频率:+d.frequency
}; 
});
x、 域(letters.map(函数(d){返回d.letter;}));
y、 域([0,d3.max(字母,函数(d){返回d.frequency;})];
svg.append(“g”)
.attr(“类”、“x轴”)
.attr(“变换”、“平移(0)”、“高度+”)
.call(d3.svg.axis().scale(x.orient(“底部”));
svg.append(“g”)
.attr(“类”、“y轴”)
.call(d3.svg.axis().scale(y.orient(“left”));
svg.selectAll(“.bar”)
.数据(字母)
.enter().append(“rect”)
.attr(“类”、“条”)
.attr(“x”,函数(d){返回x(d字母);})
.attr(“宽度”,x.rangeBand())
.attr(“y”,函数(d){返回y(d.frequency);})
.attr(“高度”,函数(d){返回高度-y(d.frequency);})