【发布时间】:2017-04-04 05:11:45
【问题描述】:
我正在尝试加载 CSV 数据并根据返回的数据绘制图表。我可以在登录到控制台时看到数据,但它没有被绘制在图表中。当我用编写返回数据的函数替换从控制台复制的数据时,图表被绘制出来。我不知道我错过了什么。
我的代码是这样的
// Options and Data definitions
declare let d3, nv: any;
export const ChartTypes = [
'lineChart',
'discreteBarChart'
];
const color = d3.scale.category20()
export const AllOptions = {
discreteBarChart: {
chart: {
type: 'discreteBarChart',
height: 450,
margin : {
top: 20,
right: 20,
bottom: 50,
left: 55
},
x: function(d){return d.label;},
y: function(d){return d.value;},
showValues: true,
valueFormat: function(d){
return d3.format(',.4f')(d);
},
duration: 500,
xAxis: {
axisLabel: 'X Axis'
},
yAxis: {
axisLabel: 'Y Axis',
axisLabelDistance: -10
}
}
}
}
获取数据到对象中
export const AllData = {
// populate the empty object with your data
discreteBarChart: getCsvData()
}
从 csv 中获取数据的 getCsvData() 函数如下所示:
function getCsvData(){
d3.csv("app/test.csv", function(error, data){
var dynamicData = data;
console.log(data)
// create an empty object that nv is expecting
var discreteBarChart = [
{
key: "Cumulative Return",
values: []
}
];
data.forEach(function (d){
d.value = +d.value
discreteBarChart[0].values.push(d)
})
console.log('The data is'+JSON.stringify(discreteBarChart))
})
return discreteBarChart
}
当我试图对这样的函数发出警报时,我得到了未定义
alert(JSON.stringify(getCsvData()))
我怀疑问题是,我把返回的语句放错了地方。
【问题讨论】:
标签: javascript angular d3.js nvd3.js